Home > front end >  How to use SUM and SUBSTRACT by different WHERE statements?
How to use SUM and SUBSTRACT by different WHERE statements?

Time:11-13

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;
  • Related