2012-11-09 40 views
0

我有一个表:如何捕捉它们中的某些特定行和SUM值?

ID SubID Cost 

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

我需要捕捉与子ID和SUM成本的所有行(在该示例成本3成本3A)。 所以,我需要回到它喜欢:

ID SubID Cost 

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

好像我也来加入这个表就可以了自我(ON ID =子ID),但我不能得到它的工作...

回答

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) 
+0

这根本不会返回任何内容。我认为'WHERE'子句需要'WHERE parent.ID NOT IN(从#MyTable中的子ID不为NULL)' – LittleBobbyTables

+0

听起来正确,更新 – PinnyM

+0

非常感谢,它的工作原理! – Serega