florian86
Goto Top

SQL SUM(Case when)

Hallo Zusammen,

kann man den folgenden Code auch kürzer schreiben?...

      
sum(case when NSDM_V_MSEG.BWART = 101 then NSDM_V_MSEG.MENGE * 1
                when NSDM_V_MSEG.BWART = 102 then NSDM_V_MSEG.MENGE * -1
                when NSDM_V_MSEG.BWART = 262 then NSDM_V_MSEG.MENGE * 1
                when NSDM_V_MSEG.BWART = 261 then NSDM_V_MSEG.MENGE * -1

ich dachte da an eine OR als Verknüpfung leider bekomme ich da andere Ergebnisse...

sum(case when NSDM_V_MSEG.BWART = 101 OR NSDM_V_MSEG.BWART = 262 then NSDM_V_MSEG.MENGE * 1
                   when NSDM_V_MSEG.BWART = 102 OR NSDM_V_MSEG.BWART = 261 then NSDM_V_MSEG.MENGE * -1


Grüße Florian

Content-ID: 648119

Url: https://administrator.de/forum/sql-sumcase-when-648119.html

Ausgedruckt am: 23.12.2024 um 16:12 Uhr

LauneBaer
Lösung LauneBaer 04.02.2021 um 11:33:57 Uhr
Goto Top
Hallo,

probier das mal mit Klammern:

sum(case when (NSDM_V_MSEG.BWART = 101 OR NSDM_V_MSEG.BWART = 262) then NSDM_V_MSEG.MENGE * 1
                   when (NSDM_V_MSEG.BWART = 102 OR NSDM_V_MSEG.BWART = 261) then NSDM_V_MSEG.MENGE * -1

Grüße
em-pie
Lösung em-pie 04.02.2021 um 11:37:10 Uhr
Goto Top
Moin
Zitat von @LauneBaer:
sum(case when (NSDM_V_MSEG.BWART = 101 OR NSDM_V_MSEG.BWART = 262) then NSDM_V_MSEG.MENGE * 1
>                    when (NSDM_V_MSEG.BWART = 102 OR NSDM_V_MSEG.BWART = 261) then NSDM_V_MSEG.MENGE * -1
Geht noch kürzer:
sum(case 
  when NSDM_V_MSEG.BWART in (101, 262) then NSDM_V_MSEG.MENGE * 1
  when NSDM_V_MSEG.BWART in (102, 261) then NSDM_V_MSEG.MENGE * -1
END)

Gruß
em-pie