SQL 更改视图名称/加入

SQL Change View Name / Joins

我正在尝试加入我创建的两个视图,但是我正在使用它们的公共字段 (cAuditNumber) 加入它们。

问题是,一旦我完成连接,它就不允许我创建视图,因为它不能有两次字段名称 cAuditNumber。

cAuditNumber 是我应该使用的 PK 吗?

如何更正此问题并继续加入表格?

CREATE VIEW KFF_Sales_Data_Updated AS
SELECT CustSalesUpdated.*, StkSalesUpdated.*
FROM CustSalesUpdated
INNER JOIN StkSalesUpdated
ON StkSalesUpdated.cAuditNumber = CustSalesUpdated.cAuditNumber

我收到以下错误:

消息 4506,级别 16,状态 1,过程 KFF_Sales_Data_Updated,第 2 行 每个视图或函数中的列名必须是唯一的。多次指定视图或函数 'KFF_Sales_Data_Updated' 中的列名 'cAuditNumber'。

用您自己的列名代替 ColumnA、Column B 等,但应遵循以下格式:

CREATE VIEW KFF_Sales_Data_Updated AS
SELECT CustSalesUpdated.cAuditNumber
    ,CustSalesUpdated.ColumnA
    ,CustSalesUpdated.ColumnB
    ,CustSalesUpdated.ColumnC
    ,StkSalesUpdated.ColumnA as StkColumnA
    ,StkSalesUpdated.ColumnB as StkColumnB
    ,StkSalesUpdated.ColumnC as StkColumnC
FROM CustSalesUpdated
INNER JOIN StkSalesUpdated
ON StkSalesUpdated.cAuditNumber = CustSalesUpdated.cAuditNumber

您只需使用 "as" 为重复的列添加别名,或者您可以使用它来重命名您想要的任何列。

CREATE VIEW KFF_Sales_Data_Updated AS
SELECT csu.cAuditNumber cAuditNumber1 , ssu.cAuditNumber cAuditNumber2  
FROM CustSalesUpdated csu
INNER JOIN StkSalesUpdated ssu
ON StkSalesUpdated.cAuditNumber = CustSalesUpdated.cAuditNumber

您可以在两个表的 select 语句中添加任何其他列,但如果有两个同名的列,您应该为它们指定别名

使用 select * 通常是一种不好的做法。另一方面,alias 您的 table 名称和列是一种很好的做法。特别是在您的情况下,您的 table 名称以及相同的列名称(跨两个 tables)可以使用别名。数据库混淆了 cAuditNumber 来自哪里。所以,别名就派上用场了。

CREATE VIEW KFF_Sales_Data_Updated
AS
SELECT 
     csu.cAuditNumber
    ,csu.Col1
    ,csu.Col2
    ,csu.Col3
    ,ssu.Col1 AS StkCol1
    ,ssu.Col2 AS StkCol2
    ,ssu.Col3 AS StkCol3
FROM CustSalesUpdated csu
INNER JOIN StkSalesUpdated ssu ON csu.cAuditNumber = ssu.cAuditNumber