我有以下 sql 语句:
select
a.desc
,sum(bdd.amount)
from t_main c
left outer join t_direct bds on (bds.repid=c.id)
left outer join tm_defination def a on (a.id =bds.sId)
where c.repId=1000000134
group by a.desc;
当我运行它时,我得到以下结果:
desc amount
NW 12.00
SW 10
当我尝试添加另一个左外连接以获取另一组值时:
select
a.desc
,sum(bdd.amount)
,sum(i.amt)
from t_main c
left outer join t_direct bds on (bds.repid=c.id)
left outer join tm_defination def a on (a.id =bdd.sId)
left outer join t_ind i on (i.id=c.id)
where c.repId=1000000134
group by a.desc;
它基本上将金额字段加倍,例如:
desc amount amt
NW 24.00 234.00
SE 20.00 234.00
虽然结果应该是:
desc amount amt
NW 12.00 234.00
SE 10.00 NULL
我该如何解决?
最佳答案
由于最有可能的多重关系,您的新左外连接迫使一些行在结果集中返回几次。删除您的 SUM 并查看返回的行并准确计算出您需要哪些行(如果适用,可以将其限制为特定类型的 t_ind 记录??),然后相应地调整您的查询。
关于sql - 多个表的左外连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19627738/