好的我有两张桌子。
表IDAssoc包含bill_id
,year
,area_id
列。
表格标题包含bill_id
,year
,main_id
和amount_due
列。
我正在尝试从ID表中获取IDAssoc表中每个相关area_ids的amount_due
列的总和。
我正在做一个select语句来选择总和并加入bill_ids。如何进行设置,以便从assoc表中的每个area_id中为每个关联的帐单创建一行。可能有三个或四个bill_ids与每个area_id相关联,我需要为每个都加上这些并返回,所以我可以在另一个语句中使用此选择。我为area_id设置了一个组,但它仍然返回每一行而不是为每个area_id汇总它们。我已经在where子句中指定了year和main_id来返回我想要的数据,但是我无法使总和正常工作。对不起,我还在学习,我不知道该怎么做。谢谢!
编辑 - 基本上我到目前为止所尝试的查询基本上就像下面发布的那样:
select a.area_id, sum(b.amount_due)
from IDAssoc a
inner join Bill b
on a.bill_id = b.bill_id
where Bill.year = 2006 and bill.bill_id = 11111
这些只是任意数字。 返回的数据如下: amount_due - area_id .05 1003 .15 1003 .11 1003 65 1004 55 1004
我需要为每个area_id返回一行,并将amount_due求和。 area_id只在assoc表中,而不在bill表中。
答案 0 :(得分:2)
select a.area_id, sum(b.amount_due)
from IDAssoc a
inner join Bill b
on a.bill_id = b.bill_id
where b.year = 2006 and b.bill_id = 11111
group by a.area_id
如果一个inner join
可以有很多或没有left join
,您可能希望将IDAssoc
更改为Bill
:
select a.area_id, coalesce(sum(b.amount_due),0)
from IDAssoc a
left join Bill b
on a.bill_id = b.bill_id
where b.year = 2006 and b.bill_id = 11111
group by a.area_id
答案 1 :(得分:1)
您缺少GROUP BY
子句:
SELECT a.area_id, SUM(b.amount_due) TotalAmount
FROM IDAssoc a
LEFT JOIN Bill b
ON a.bill_id = b.bill_id
GROUP BY a.area_id