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
我正在尝试加入我创建的两个视图,但是我正在使用它们的公共字段 (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