Announcement

Collapse
No announcement yet.

Case Anweisung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Case Anweisung

    Hey hab mal eine Frage wie ich eine Case Anweisung in SQL formulieren muss;

    Folg. Bedingungen müssen erfüllt sein

    Wenn A = '-' dann summiere M und schreibe in ein extra Feld X (existiert n. nicht)
    Wenn A = '+' dann summiere M und schreibe in ein extra Feld y (existiert n. nicht)
    Wenn A= 0 dann nimm den Wert aus dem Feld Feld das C


    Wo muss ich den group by Befehl reinschreiben; jeweils am Ende jeder Case anweisung??

    Reicht das als Case umschreibung; jemand eine Idee

    Es sollte sich nur um temp. Feld handeln so wie ein Summenfeld
    Zuletzt editiert von Maveric251279; 04.06.2009, 17:52.

  • #2
    Die formulierung ist je nach DBMS unterschiedlich. Welches hast du den?

    Comment


    • #3
      Leider kann ich nur sagen dass wir die ISeries von IBM als Server benutzen DB2; Also IBM

      Comment


      • #4
        Frage???

        Die Fallunterscheidung lautet...

        Wenn A = '-' dann summiere und schreibe in ein extra Feld X (existiert n. nicht)
        Wenn A = '+' dann summiere und schreibe in ein extra Feld y (existiert n. nicht)
        Wenn A= 0 dann nimm das Feld das C und D ( C und D existieren beide)
        ... und einer dieser Fälle tritt pro Tabellenzeile ein.
        Meine Frage wäre wie dann mehrere Felder erzeugt werden können??

        Lösung mit einer spalte:
        select
        case when spalteA<0 then wert_1 when spalteA>0 then wert_2
        else SpalteC+SpalteD
        end
        as CASE_SPALTE,
        count(*)
        from tabelle
        group by case when spalteA<0 then wert_1 when spalteA>0 then wert_2
        else SpalteC+SpalteD
        end;

        Comment


        • #5
          Hey erstmal danke für die Hilfe:

          ich glaube ich werde das über ein left outer machen und den Result set immer wieder hinten dran kleben

          das ist n. so elegant aber für den Anfang als Anfänger ok ;-)

          Comment

          Working...
          X