父子id查询
Parent Child over id 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",我想要父级和父级的总值以及与该父级一起使用的 "child" 将由 isparent = 0 and total = total*-1 where isParent = 1
欢迎提出任何建议
根据您的要求,您只需要一个简单的self-join来找到可以与每个parent配对的child。
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 个或更多 parent 具有相同的 ID 和相同的总计,则此查询将 "break",但根据您的要求,我假设这不会发生。
示例数据:
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",我想要父级和父级的总值以及与该父级一起使用的 "child" 将由 isparent = 0 and total = total*-1 where isParent = 1
欢迎提出任何建议
根据您的要求,您只需要一个简单的self-join来找到可以与每个parent配对的child。
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 个或更多 parent 具有相同的 ID 和相同的总计,则此查询将 "break",但根据您的要求,我假设这不会发生。