Ergebnis 1 bis 6 von 6

Thema: CASE WHEN ohne ELSE

  1. #1
    Dassoud ist offline Neuer Benutzer
    Registriert seit
    11.07.2007
    Beiträge
    25

    Standard CASE WHEN ohne ELSE

    Hallo zusammen,

    ich habe eine Abfrage mit CASE ... WHEN ... THEN ... ELSE NULL END gebastelt. Postgres zeigt mir jetzt bei allen Einträgen in denen die WENN-Bedingung stimmt an, was ich hinter THEN geschrieben habe. Bei allen anderen zeigt es mir einen leeren Wert in der Zeile an.

    Ich möchte aber, daß wenn die Bedingung hinter WHEN nicht zutrifft die Zeile gar nicht erst angezeigt wird und nicht einfach leer gelassen wird.

    Ich hab ELSE NULL mal gelöscht, aber pgAdmin macht es dann automatisch wieder hin.

    Gibt es irgendeine andere Lösung?

    Danke.

  2. #2
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard

    die WHEN's in die WHERE Klause aufnehmen ?

  3. #3
    Fröstel ist offline Neuer Benutzer
    Registriert seit
    31.01.2006
    Ort
    Berlin
    Beiträge
    28

    Standard

    Symbiont hat recht, ein CASE ... WHEN ... brauchst du vermutlich gar nicht:
    Code:
    SELECT das_was_hinter_THEN_steht 
      FROM schema.tabelle 
      WHERE das_was_hinter_WHEN_steht;
    Falls das nicht funktioniert, wäre die Angabe deiner Abfrage ganz sinnvoll.

    CU
    Fröstel
    -------------------------------------------------------------
    Information is a weapon of mass destruction
    [Faithless]
    -------------------------------------------------------------

  4. #4
    Dassoud ist offline Neuer Benutzer
    Registriert seit
    11.07.2007
    Beiträge
    25

    Standard

    Danke schonmal, aber ich denke bei meiner Abfrage funktioniert das nicht so, oder?
    ###
    SELECT en.id_entry, min(
    CASE rd.id_merkmal
    WHEN 136 THEN 137
    WHEN 139 THEN 140
    WHEN 229 THEN 227
    WHEN 143 THEN 144
    WHEN 141 THEN 142
    WHEN 230 THEN 228
    ELSE NULL
    END) AS id_merkmal, avg(
    CASE rd.id_merkmal
    WHEN 136 THEN av.avg / ch.chk * 100
    WHEN 139 THEN av.avg / ch.chk * 100
    WHEN 229 THEN av.avg / ch.chk * 100
    WHEN 143 THEN av.avg / ch.chk * 100
    WHEN 141 THEN av.avg / ch.chk * 100
    WHEN 230 THEN av.avg / ch.chk * 100
    ELSE NULL
    END) AS wert, count(
    CASE rd.id_merkmal
    WHEN 136 THEN rd.rd_wert
    WHEN 139 THEN rd.rd_wert
    WHEN 229 THEN rd.rd_wert
    WHEN 143 THEN rd.rd_wert
    WHEN 141 THEN rd.rd_wert
    WHEN 230 THEN rd.rd_wert
    ELSE NULL
    END) AS anzahl
    FROM ....
    ###

    Also mein Ziel ist aus von 6 Merkmalen einen Relativwert zu berechnen, diesen Relativwerten eine neue id_merkmal zuweisen und gleichzeitig zu zählen wie viele Einzelwerte in den Relativwert eingingen. Da ich noch andere Merkmale habe, zeigt er mir diese auch im Abfrageergebniss an, aber eben als leere Felder (wegen ELSE NULL) und das möchte ich nicht haben.

  5. #5
    symbiont ist offline Erfahrener Benutzer
    Registriert seit
    17.03.2008
    Ort
    NULL
    Beiträge
    1.320

    Standard den ganzen Schmonz ins WHERE uebernehmen

    WHERE (CASE rd.id_merkmal
    WHEN 136 THEN 137
    WHEN 139 THEN 140
    WHEN 229 THEN 227
    WHEN 143 THEN 144
    WHEN 141 THEN 142
    WHEN 230 THEN 228
    ELSE NULL
    END) IS NOT NULL


    oder einfacher
    WHERE rd.id_merkmal IS NOT NULL
    AND rd.id_merkmal <> ..
    AND rd.id_merkmal <> ..

    wenn du solche CASE WHENs formulierst kannst hier auch die tatsaechlichen Werte filtern ..

    Gruß

  6. #6
    Dassoud ist offline Neuer Benutzer
    Registriert seit
    11.07.2007
    Beiträge
    25

    Standard

    Hi, vielen vielen Dank! Das hat hingehauen.

Ähnliche Themen

  1. Case
    Von minor_73 im Forum SQL
    Antworten: 9
    Letzter Beitrag: 18.07.2011, 14:02
  2. case when - Probleme mit where
    Von toni_83 im Forum SQL
    Antworten: 3
    Letzter Beitrag: 18.05.2011, 13:16
  3. sql syntax case
    Von absbegin im Forum Andere Datenbanken
    Antworten: 4
    Letzter Beitrag: 03.05.2010, 07:59
  4. case when in where-Bedingung?
    Von toni_83 im Forum SQL
    Antworten: 2
    Letzter Beitrag: 16.03.2010, 15:42
  5. Hilfe bei Case
    Von waldi im Forum SQL
    Antworten: 1
    Letzter Beitrag: 18.07.2007, 18:40

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum