perlfred: berechnete Spalte als Quelle benutzen

Hi,

kann man auf Transakt-SQL-Ebene die Ergebnisse einer berechneten Spalte als Quelle für eine weitere Berechnung verwenden?

Konkret frage ich einen NULL-Wert in einer DataTime Spalte ab und ersetze ihn durch ein Jahresendedatum.

CASE WHEN dEndDate IS NULL THEN CONVERT(datetime, '31/12/2007') ELSE dEndDate AS LEnde

Nun möchte ich aber die Tage zwischen einer anderen Spalte und dieser berechneten (kor.) Spalte auch noch berechnen.

LEnde - dStartDate

Dies gelingt mir jedoch nicht, da MS-SQL-Server entweder die Spalte LEnde nicht kennt (noch nachvollziehbar) bzw. wenn ich den gesamten Ausdruck noch einmal einsetze

CASE WHEN dEndDate IS NULL THEN CONVERT(datetime, '31/12/2007') ELSE dEndDate - dStartDate AS LTage2

die Fehlermeldungen:
Fehler in der Liste der Funktionsargumente: "AS" wurde nicht erkannt.
Fehler in der Liste der Funktionsargumente: ")" wurde nicht erkannt.
Analysieren von Abfragetext nicht möglich.

kommen. Auch Klammer setzen etc. führte nicht zum Erfolg.

(CASE WHEN dEndDate IS NULL THEN CONVERT(datetime, '31/12/2007') ELSE dEndDate) - dStartDate AS LTage2

Hat jemand einen Hinweis?

Danke.

  1. Mahlzeit perlfred,

    CASE WHEN dEndDate IS NULL THEN CONVERT(datetime, '31/12/2007') ELSE dEndDate

    Ich kenne Transact-SQL nicht gut genug - aber z.B. Oracle würde an dieser Stelle noch ein "END" erwarten, um zu kennzeichnen, dass die CASE-Anweisung beendet ist.

    AS LEnde

    die Fehlermeldungen:
    Fehler in der Liste der Funktionsargumente: "AS" wurde nicht erkannt.
    Fehler in der Liste der Funktionsargumente: ")" wurde nicht erkannt.
    Analysieren von Abfragetext nicht möglich.

    Das klingt für mich so, als ob die Datenbank nicht so richtig weiß, wo die CASE-Anweisung beendet ist.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo EKKi,

      vielen Dank für deine Antwort. Beim bilden der berechneten Spalte hatte ich END ... nur nicht mit gepostet. Bei der weiteren Berechnung hatte ich END aber wirklich vergessen!!

      Man sollte eben nicht immer gleich einen inhaltlichen Fehler vermuten sonder einfach mal die Syntax prüfen, vielen Dank nochmals!!!

      perlfred.