2016-02-22 58 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