父查询的父子查询

时间:2016-02-22 19:22:21

标签: sql sql-server recursive-query

示例数据:

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

在psuedo / english中,对于给定id中的每个“pair”,我想要父母和父母的总价值,与父母一起的“孩子”将由isparent = 0 and total = total*-1 where isParent = 1确定

欢迎任何建议

1 个答案:

答案 0 :(得分: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和相同的总数,则此查询将“中断”,但根据您的要求,我假设不会发生。