这是Rudresh BR,试图通过sum将同一行的数据获取到多个列中。但遇到问题,请查找以下有关问题的详细信息,
预期数据:
mysql - 在SQL中使用join进行多次和-LMLPHP
但获得的数据:
mysql - 在SQL中使用join进行多次和-LMLPHP
表中数据
列表项
mysql - 在SQL中使用join进行多次和-LMLPHP
使用的查询:

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/

10-11 03:26