I am trying to sum dbo.OperacijosPard_SK.SumaBePVM
by
dbo_OperacijuTIpai_SK.OperacijuTipaiID = 50
and substract by dbo_OperacijuTIpai_SK.OperacijuTipaiID = 61
Is there an easier way than creating 2 queries with SUM of _Id = 50
, and _Id = 61
and then joining?
SELECT dbo_Partneriai_SK.Pavad, Sum(dbo_OperacijosPard_SK.SumaBePVM) AS SumOfSumaBePVM
FROM (dbo_OperacijosPard_SK INNER JOIN dbo_Partneriai_SK ON dbo_OperacijosPard_SK.PartneriaiId = dbo_Partneriai_SK.PartneriaiId) INNER JOIN dbo_OperacijuTipai_SK ON dbo_OperacijosPard_SK.OperacijuTipaiId = dbo_OperacijuTipai_SK.OperacijuTipaiId
WHERE (((dbo_OperacijosPard_SK.Data)>#1/1/2021#) AND ((dbo_OperacijuTipai_SK.OperacijuTipaiId)=50 Or (dbo_OperacijuTipai_SK.OperacijuTipaiId)=61))
GROUP BY dbo_Partneriai_SK.Pavad
ORDER BY Sum(dbo_OperacijosPard_SK.SumaBePVM) DESC;
CodePudding user response:
SELECT
dbo_Partneriai_SK.Pavad
, Sum(case when OperacijuTipaiId=50 then dbo_OperacijosPard_SK.SumaBePVM else 0 end)
- Sum(case when OperacijuTipaiId=61 then dbo_OperacijosPard_SK.SumaBePVM else 0 end) AS SumOfSumaBePVM
FROM (dbo_OperacijosPard_SK
INNER JOIN dbo_Partneriai_SK ON dbo_OperacijosPard_SK.PartneriaiId = dbo_Partneriai_SK.PartneriaiId)
INNER JOIN dbo_OperacijuTipai_SK ON dbo_OperacijosPard_SK.OperacijuTipaiId = dbo_OperacijuTipai_SK.OperacijuTipaiId
WHERE (((dbo_OperacijosPard_SK.Data)>#1/1/2021#) AND ((dbo_OperacijuTipai_SK.OperacijuTipaiId)=50 Or (dbo_OperacijuTipai_SK.OperacijuTipaiId)=61))
GROUP BY dbo_Partneriai_SK.Pavad
ORDER BY Sum(dbo_OperacijosPard_SK.SumaBePVM) DESC;