我有一张桌子,客户,看起来有点像这样:
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*)
),
答案 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
)