Announcement

Collapse
No announcement yet.

case when und where Bedingung

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

  • case when und where Bedingung

    Hallo Leute,

    ich möchte ein SQL-Statement schreiben, welches mit case arbeitet. Nun habe ich aber ein Problem.

    Vorab sieht die Anweisung wie folgt aus:
    Code:
    select C.[Customer No_], C.[Contract No_], case when (ANT.[Cancellation Date] < CURRENT_TIMESTAMP and ANT.[Cancellation Date] <> '1753-01-01 00:00:00.000') then 'korrigieren' end as Fehler
    from ANT inner join (C inner join SC on SC.[Contract No_] = C.[Contract No_])
    on ANT.[Customer No_]  = C.[Customer No_]
    where...
    In der where Bedingung würde ich am liebsten nur die Zeilen ausgeben, die nicht mit korrgieren markiert werden. Geht sowas?

    Vielen Dank für eure Hilfe!

    VG
    cabal

  • #2
    Originally posted by cabal View Post
    Hallo Leute,

    ich möchte ein SQL-Statement schreiben, welches mit case arbeitet. Nun habe ich aber ein Problem.

    Vorab sieht die Anweisung wie folgt aus:
    Code:
    select C.[Customer No_], C.[Contract No_], case when (ANT.[Cancellation Date] < CURRENT_TIMESTAMP and ANT.[Cancellation Date] <> '1753-01-01 00:00:00.000') then 'korrigieren' end as Fehler
    from ANT inner join (C inner join SC on SC.[Contract No_] = C.[Contract No_])
    on ANT.[Customer No_]  = C.[Customer No_]
    where...
    In der where Bedingung würde ich am liebsten nur die Zeilen ausgeben, die nicht mit korrgieren markiert werden. Geht sowas?

    Vielen Dank für eure Hilfe!

    VG
    cabal
    Ja, entweder Deine Abfrage als Subselect oder aber die Case-bedingung gleich in das WHERE ziehen.


    Andreas

    Comment


    • #3
      Du solltest einfach die selbe Prüfung wie im Case in der where Bedingung verwenden. Auf den Text hast du im Where keinen Zugriff. Die Select Klausel wird erst nach dem Auswerten der WHERE Klausel ausgewertet. Glücklicherweise übrigens alles andere wäre elendig langsam.


      In der where Bedingung würde ich am liebsten nur die Zeilen ausgeben, die nicht mit korrgieren markiert werden
      Wieso hast du dann überhaupt einen case Wenn die schon in der where Klausel rausfallen wirst du nie die Prüfung in der SELECT Klausel brauchen da ja dann garantiert immer der nicht vorhandene ELSE Zweig deines CASE zieht.

      Comment

      Working...
      X