if-Abfrage in SQL

Mirkec

Neuer Benutzer
Beiträge
2
Hallo allerseits,

Ich bin kein Profi auf diesem Gebiet, jedoch will ich es erlernen. :)
Folgendes Szenario:
Eine Datenbank mit sehr vielen Einträgen (Kassensystem)
Abfrage der Verkäufe, Stornos & Rücknahmen vom Vormonat. (vh.VOUTYPE IN ('V', 'S', 'R'))
Diese Verkäufe sind mit einer Provision verbunden. (pd.value)
Die Ausgabe sieht dann ungefähr so aus:
Shop - Artikel - Provision (pd.value) - Tpy (vh.voutype)
Shop1 - Artikel1 - 80 - V
Shop1 - Artikel1 - 80 - S

Eigentlich passiert ja alles so wie es sein soll, mit einer Ausnahme:
Wenn ich jetzt ein Storno bzw. eine Rücknahme habe, gibt er mir bei der Provision den Wert
als PLUS. Ich bräuchte diesen Wert mit einem - (Minus) davor, also:
Shop1 - Artikel1 - -80 - S

Es gibt nur die eine Möglichkeit das mittels einer SQL Abfrage zu lösen.
Ich hätte mir das so in etwa vorgestellt:
if vh.VOUTYPE = S OR vh.VOUTYPE = R then "-".pd.value ELSE pd.value

Ich hoffe das ich es verständlich formulieren konnte.
Danke im voraus für die Hilfestellung.

LG Mirko
 
Werbung:
Es gibt nur die eine Möglichkeit das mittels einer SQL Abfrage zu lösen.
Ich hätte mir das so in etwa vorgestellt:
if vh.VOUTYPE = S OR vh.VOUTYPE = R then "-".pd.value ELSE pd.value

Ich hoffe das ich es verständlich formulieren konnte.
Danke im voraus für die Hilfestellung.

LG Mirko

In PostgreSQL geht es so (und vermutlich auch in Oraggle):

Code:
test=*# select * from umsatz ;
 betrag | art
--------+-----
  80 | V
  60 | S
  810 | V
  10 | R
(4 rows)

Time: 0,318 ms
test=*# select *, case when art in ('R','S') then betrag * -1 else betrag end as umsatz from umsatz ;
 betrag | art | umsatz
--------+-----+--------
  80 | V  |  80
  60 | S  |  -60
  810 | V  |  810
  10 | R  |  -10
(4 rows)

test=*# select sum( case when art in ('R','S') then betrag * -1 else betrag end) as umsatz from umsatz ;
 umsatz
--------
  820
(1 row)
 
Werbung:
Zurück
Oben