Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

if-Abfrage in SQL

Dieses Thema im Forum "Oracle" wurde erstellt von Mirkec, 9 Januar 2015.

  1. Mirkec

    Mirkec Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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)
    
     
    Mirkec und Distrilec gefällt das.
  3. Mirkec

    Mirkec Neuer Benutzer

    Hallo akretschmer,

    hat perfekt funktioniert!!

    Danke Danke Danke
    LG Mirko
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden