2016-02-22 59 views
-1

實施例的數據:父子超過ID查詢

id parent child  total isParent isParentCHildthing 
1  J   NA  5  1  1 
1  B   NA  -5  0  1 
1  J   NA  -10  1  1 
1  B   NA  10  0  1 
2  X   NA  -1  1  1 
2  Y   NA  1  0  1 
3  Z   NA  6  0  1 
3  W   NA  7  0  1 
3  P   NA  -6  1  1 
3  R   NA  -7  1  1 
3  TT   YY  500 0  0 

希望的輸出:

id parent child total 
1  J  B  5  
1  J  B  -10 
2  X  Y  -1 
3  P  Z  -6 
3  R  W  -7 

在僞/英語,一種用於在給定id的每個「配對」,我希望父和父母的總值和「子」是與父進程會被isparent = 0 and total = total*-1 where isParent = 1

確定的任何建議,歡迎

+0

建議你看網上書籍中的Recusive CTE。 – HLGEM

回答

1

根據您的要求,您只需要一個簡單的自聯接即可找到可與每位家長配對的一個孩子。

SELECT p.id, p.parent, c.parent AS child, p.total 
FROM MyTable p 
LEFT OUTER JOIN MyTable c 
ON c.isParent=0 
AND c.id=p.id 
AND c.Total = p.Total*-1 
WHERE p.isParent=1 

注意,該查詢將「破」,如果有過2周或更多的家長有相同ID和相同的共有,但根據您的要求,我假設是不可能發生的。

+0

對,我不確定這種情況是否會發生。我實現這個有點不同,因爲這個結果集中的所有數據都不需要這個邏輯,所以我需要根據一些條件將它分解出來,然後將它合併到一起,但我認爲這應該起作用。 – Scotch