2014-11-13 62 views
1
从子表项

比方说,我有表orders如何总结在SQL

id  name 
1  order1 
2  order2 
3  order3 

和子表items

id parent amount price 
1  1  1   10 
2  1  3   20 
3  2  2   5 
4  2  5   1 

我想用以便与添加的列value创建查询。它应该计算顺序与所有相关的项目

id  name  value 
1  order1 70 
2  order2 15 
3  order3 0 

这可能与TSQL

回答

2

GROUP BYSUM会做到这一点,需要使用left joinisnull,你不必对所有的订单项目。

SELECT o.id, o.name, isnull(sum(i.amount*i.price),0) as value 
    FROM orders o 
    left join items i 
    on o.id = i.parent 
    group by o.id, o.name 
0

我认为你在寻找这样的事情

SELECT o.name, i.Value FROM orders o WITH (NOLOCK) 
LEFT JOIN (SELECT parent, SUM(price) AS Value FROM items WITH (NOLOCK) GROUP BY parent) i 
ON o.id = i.parent 

...好像RADAR打我的答案。 编辑:缺少在线。