我是Microsoft SQL Server的新手.我正在尝试连接两个具有名为CampaignIDusing的公用密钥的表LEFT OUTER JOIN.我需要在不同的查询中重用结果,所以我决定使用捕获结果集CTE_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
Run Code Online (Sandbox Code Playgroud)
但是,当我跑到上面时,我得到:
The column `CampaignID` was specified multiple times for `CTE_Results`.
Run Code Online (Sandbox Code Playgroud)
通过阅读旧的StackOverflow问题和答案,似乎从CampaignID两个表中加入,我必须使用表别名来指定CampaignID我想要的(哪个表)SELECT.但我认为我做到了这一点,甚至看起来错误仍然存在.
有没有办法让我选择并保留我的CTE中的两个CampaignID?如果是这样,应该改变什么?谢谢你的答案!
您CampaignID在CTE中选择了两次,使用不同alias name来解决问题
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
Run Code Online (Sandbox Code Playgroud)
或使用此
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2010 次 |
| 最近记录: |