这是Rudresh BR,试图通过sum将同一行的数据获取到多个列中。但遇到问题,请查找以下有关问题的详细信息,
预期数据:
但获得的数据:
表中数据
列表项
使用的查询:
select
a.BM_BANK_NAME,
SUM(PCBunit.BID_CURRENCY_VALUE) as PCBUnitSum,
SUM(PTBunit.BID_CURRENCY_VALUE) as PTBUnitSum
from
dbo.BG_Mtr_Bank_Master a
inner join dbo.BG_Tra_Issuance_Details PCBunit on a.BM_ID=PCBunit.BID_BANK_NAME and PCBunit.BID_UNIT_DIVISION='PCB'
inner join dbo.BG_Tra_Issuance_Details PTBunit on a.BM_ID=PTBunit.BID_BANK_NAME and PTBunit.BID_UNIT_DIVISION='PTB'
group by
a.BM_BANK_NAME,
PCBunit.BID_UNIT_DIVISION,
PTBunit.BID_UNIT_DIVISION
PCBUnitSum和PTBUnitSum分别是PCB和PTB的投标货币值行的总和。
我观察到的是,一旦完成了3000(我预期是输出),它就根据行数PCB和PTB分别重做和,因此PCB有3行,3000 + 3000 +3000=9000作为O/P。
我要求所有人,
请帮我找出哪里出了问题?
最佳答案
不要自连接表,用例
select a.BM_BANK_NAME
, SUM(case when t.BID_UNIT_DIVISION ='PCB' then t.BID_CURRENCY_VALUE end) as PCBUnitSum
, SUM(case when t.BID_UNIT_DIVISION ='PTB' then t.BID_CURRENCY_VALUE end) as PTBUnitSum
from dbo.BG_Mtr_Bank_Master a
inner
join dbo.BG_Tra_Issuance_Details t
on a.BM_ID = t.BID_BANK_NAME
and t.BID_UNIT_DIVISION in ('PCB', 'PTB')
group
by a.BM_BANK_NAME
关于mysql - 在SQL中使用join进行多次和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40304907/