Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 该栏为「;xxxx“;多次为“指定”;CTE_YYYY";_Sql Server - Fatal编程技术网

Sql server 该栏为「;xxxx“;多次为“指定”;CTE_YYYY";

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

我是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 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