这是Rudresh BR,尝试通过总和获得相同行的数据到多个列。但是遇到问题,请找到下面提到的有关该问题的详细信息,
预期数据:
但获得数据:
表中的数据
使用的查询:
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的BID_Currency_Value行的总和。
我观察的是一旦总和完成,即3000(我期望作为输出),它根据PCB和PTB分别存在的行数重做总和,因此有3行PCB,3000 + 3000 + 3000 = 9000为O / P.
我要求所有人, 请帮我找出问题所在?
答案 0 :(得分:2)
不要自行加入表格,用例
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
答案 1 :(得分:0)
试试这个:
X_test
这可能会有所帮助。 :)