2017-02-17 76 views
0

我有一個表,客戶,它看起來有點像這樣:結合SQL WITHs

CustomerID cobuyerID 
001   005 
002   
003   006 
004   
005 
006 

我能用得到一組客戶和一組cobuyers的?因此,像:

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

http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Mihai

回答

0

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

我不認爲雖然你可以有你的CTE定義爲客戶和客戶的選擇table ...兩個對象相同的名字好像DB引擎會混淆。

這裏有一個左連接...

;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 
)