berechnete Spalte als Quelle benutzen
perlfred
- datenbank
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.
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
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.