Sql server 该栏为「;xxxx“;多次为“指定”;CTE_YYYY";
我是Microsoft SQL Server的新手。我正在尝试使用Sql server 该栏为「;xxxx“;多次为“指定”;CTE_YYYY";,sql-server,Sql Server,我是Microsoft SQL Server的新手。我正在尝试使用左外部联接连接两个具有名为活动ID的公用键的表。我需要在不同的查询中重用结果,因此我决定使用CTE\u Results捕获结果集。比如说, -- This is my CTE script WITH CTE_Results AS ( SELECT t1.CampaignID, t2.CampaignID, t1.Name, t2.Vendor FROM CampaignDetails AS t1 LEFT OUTER
左外部联接连接两个具有名为活动ID
的公用键的表。我需要在不同的查询中重用结果,因此我决定使用CTE\u Results
捕获结果集。比如说,
-- This is my CTE script
WITH CTE_Results AS
(
SELECT t1.CampaignID, t2.CampaignID, t1.Name, t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID
)
-- This is the script I want to use to compare the resulting table. For example,
SELECT Vendor
FROM CTE_Results
然而,当我在上面跑步时,我得到:
The column `CampaignID` was specified multiple times for `CTE_Results`.
通过阅读旧的StackOverflow问题和答案,似乎由于ActivityID
在两个要联接的表中,我必须使用表别名来指定我要选择谁(哪个表)的ActivityID
。但我认为我做到了,甚至错误似乎仍然存在
有没有办法让我在CTE中选择并保留两个活动ID?如果是,应该改变什么?谢谢你的回答 您需要在CTE中为活动ID
列别名,或在CTE声明中定义返回的列名。否则,这就像创建一个包含两个同名列的表
列别名示例:
WITH CTE_Results AS
(
SELECT t1.CampaignID as 'CampaignID1', t2.CampaignID as 'CampaignID2', t1.Name, t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID
)
或在CTE声明中:
WITH CTE_Results (CampaignID1, CampaignID2, [Name], Vendor) AS
(
SELECT t1.CampaignID, t2.CampaignID , t1.Name, t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID
)
您需要在CTE中为活动ID
列添加别名,或在CTE声明中定义返回的列名。否则,这就像创建一个包含两个同名列的表
列别名示例:
WITH CTE_Results AS
(
SELECT t1.CampaignID as 'CampaignID1', t2.CampaignID as 'CampaignID2', t1.Name, t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID
)
或在CTE声明中:
WITH CTE_Results (CampaignID1, CampaignID2, [Name], Vendor) AS
(
SELECT t1.CampaignID, t2.CampaignID , t1.Name, t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID
)
您在CTE中选择了两次activity id
,请使用不同的别名来解决此问题
WITH CTE_Results
AS (SELECT t1.CampaignID AS cd_CampaignID,
t2.CampaignID AS cod_CampaignID,
t1.NAME,
t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID)
-- This is the script I want to use to compare the resulting table. For example,
SELECT Vendor
FROM CTE_Results
还是用这个
WITH CTE_Results(cd_CampaignID, cod_CampaignID, NAME, Vendor)
AS (SELECT t1.CampaignID,
t2.CampaignID,
t1.NAME,
t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID)
-- This is the script I want to use to compare the resulting table. For example,
SELECT Vendor
FROM CTE_Results
您在CTE中选择了两次activity id
,请使用不同的别名来解决此问题
WITH CTE_Results
AS (SELECT t1.CampaignID AS cd_CampaignID,
t2.CampaignID AS cod_CampaignID,
t1.NAME,
t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID)
-- This is the script I want to use to compare the resulting table. For example,
SELECT Vendor
FROM CTE_Results
还是用这个
WITH CTE_Results(cd_CampaignID, cod_CampaignID, NAME, Vendor)
AS (SELECT t1.CampaignID,
t2.CampaignID,
t1.NAME,
t2.Vendor
FROM CampaignDetails AS t1
LEFT OUTER JOIN CampaignOnlineDetails AS t2
ON t1.CampaignID = t2.CampaignID)
-- This is the script I want to use to compare the resulting table. For example,
SELECT Vendor
FROM CTE_Results