我有两个表之间具有1到n的关系。一个表包含帐单(命名帐单)的一般信息 (<-1至n->) 另一个包含帐单上的项目(命名项目)。我想要一个列出所有帐单并汇总新行中项目价格的查询。但是,我当然希望每个法案只列出一次,而不是每个项目一次。
通常我什么都没张贴。但是我找不到答案,因为我不知道如何搜索这个问题。抱歉,这很明显。
我的桌子长什么样:
bill:
bill_id - customer - date
items:
item_id - bill_id - amount - price
答案 0 :(得分:1)
一个简单的聚合连接应该在这里工作:
SELECT
b.bill_id,
COALESCE(SUM(i.price), 0) AS total_price
FROM bill b
LEFT JOIN items i
ON b.bill_id = i.bill_id
GROUP BY
b.bill_id;
如果要包括bill
表中的其他两列,则只需将它们添加到SELECT
和GROUP BY
子句中。
答案 1 :(得分:0)
您可以尝试这个。
; with cte as (
select b.bill_id, i.item_id ,isnull(i.price,0) as Price from
Bill as b inner join items as i on b.bill_id =i.bill_id
union all
select b.bill_id , null, sum(isnull(i.price,0)) from
Bill as b inner join items as i on b.bill_id =i.bill_id
group by b.bill_id
)
select * from cte order by bill_id, item_id desc