我有3张桌子
bl_id在这里是唯一的。
bl_id再次是单身。
bl_id在这里不是唯一的。将有多行相同的bu_id。
我正在尝试以下列方式检索数据
bl_id |名字| bl_area | sum(paper_tons)| sum(bottles_tons)| paper_tons | bottles_tons
sum(paper_tons)应该返回相同bu_id的所有纸张吨的总和,例如1月到12月。
即使bl_data中没有相应的bu_id,也必须检索bl_main中的所有bu_id。在这种情况下,总和应显示为0.
我之前没有写过复杂的sql查询,请帮帮我!
提前致谢!
答案 0 :(得分:2)
我猜你有MS SQL Server。 试试这个(尚未测试)。
SELECT
bl_main.bl_id,
bl_main.bl_area,
bl_id.[name],
sum(bl_data.paper_tons) OVER (PARTITION BY bl_main.bl_id),
sum (bl_data.bottles_tons) OVER (PARTITION BY bl_main.bl_id),
paper_tons ,
bottles_tons
FROM bl_main
Right join bl_id on bl_main.bl_id = bl_id.bl_id
right join bl_data on bl_main.bl_id = bl_data.bl_id
答案 1 :(得分:0)
未经测试但我认为应该这样做(对于MS SQL Server)
编辑最长月份
SELECT
bl_main.bl_id,
name,
bl_area,
sums.SummedPaper,
sums.SummedBottles,
paper_tons,
bottles_tons
FROM
bl_main
JOIN bl_details ON
bl_main.bl_id= bl_details.bl_id
JOIN bl_data ON
bl_data.bl_id= bl_main.bl_id
JOIN (
SELECT bl_id,
SUM(Paper_tons) As SummedPaper,
SUM(bottle_tons) As SummedBottles
FROM
bl_data
WHERE Month = (SELECT MAX(Month) FROM bl_data)
GROUP by bl_id) sums ON
sums.bl_id = bl_main.bl_id