结合SQL WITHs

时间:2017-02-17 14:56:52

标签: sql-server-2008 common-table-expression

我有一张桌子,客户,看起来有点像这样:

CustomerID  cobuyerID
001         005
002         
003         006
004         
005
006

我可以使用WITH来获得一组客户和一组合作伙伴吗?如下所示:

;WITH Customers as
(
   SELECT * FROM Customers where (* WHERE CustomerID not in cobuyerID*)
),
Cobuyer as
(
   SELECT * FROM Customers where (*WHERE CustomerID only in cobuyerID*)     
),

1 个答案:

答案 0 :(得分:0)

我想你可以用LEFT JOIN或者存在......

来做

我不认为你可以将你的CTE定义为客户并从客户表中选择...两个对象相同的名称似乎数据库引擎会混淆。

这是左连接...

;WITH C2 as
(
   SELECT * 
   FROM Customers A
   LEFT JOIN Customers B
    ON A.CustomerID = B.CoBuyerID
   WHERE B.CobuyerID is Null)
),
Cobuyer as
(
   SELECT * 
   FROM C2 A
   LEFT JOIN Customers B
     on A.CoBuyer =  B.CustomerID
   WHERE B.CustomerID is null
)