如何捕获一些特定的行和SUM值?

时间:2012-11-09 16:02:24

标签: sql-server

我有一张桌子:

ID   SubID   Cost

 1    NULL     10
 2    NULL     10
 3      3a     10
 3a   NULL     10
 4    NULL     10
 ...

我需要捕获具有SubID和SUM Costs的所有行(在此示例中,Cost 3使用Cost 3a)。 所以,我需要像以下一样返回它:

ID   SubID   Cost

 1    NULL     10
 2    NULL     10
 3      3a     20
 4    NULL     10
 ...

好像我必须自己加入这个表(ON ID = SubID),但我不能让它工作......

1 个答案:

答案 0 :(得分:1)

如果每个父项最多只有一个子项,并且只嵌套一个子项,则可以使用:

SELECT parent.ID, parent.SubID, parent.Cost + COALESCE(child.Cost, 0)
FROM someTable parent
LEFT JOIN someTable child
  ON parent.SubID = child.ID
WHERE parent.ID NOT IN (SELECT SubID from someTable WHERE SubID IS NOT NULL)