Hallo,
ich fummel hier jetzt seit ner guten Stunde rum und bekomme es im T-SQL einfach nicht geschafft eine simple CASE Abfrage zu machen.
Ich möchte analog zu dieser VBA Variante das in T-SQL machen.
if isNull([bis]) then
Monate = datedif("m", [von], date())
else
Monate = datedif("m", [von], [bis])
end if
Was ich z.B. probiert habe war sowas:
declare @monate AS int
SELECT MitarbeiterID_F,
case
when bis is null
then @monate = DATEDIFF(m, [von], getdate())
when bis not is null
then @monate = DATEDIFF(m, [von], [bis])
end
FROM [Personaldaten].[dbo].[tblZugehoerigkeiten]
Monate soll ein berechnetes Feld sein.
Könnt ihr mir da mal auf die Sprünge helfen? Wo mache ich was und warum falsch -.-
Danke!
Zitat von: Xoar am September 01, 2021, 14:33:50declare @monate AS int
SELECT MitarbeiterID_F,
case
when bis is null
then @monate = DATEDIFF(m, [von], getdate())
when bis not is null
then @monate = DATEDIFF(m, [von], [bis])
end
FROM [Personaldaten].[dbo].[tblZugehoerigkeiten]
Monate soll ein berechnetes Feld sein.
Monate soll einfach eine berechnete Spalte in der ausgegebenen Ergebnismenge sein?
Dann lass die Variable einfach weg.
SELECT MitarbeiterID_F,
case
when bis is null
then DATEDIFF(m, [von], getdate())
when bis not is null
then DATEDIFF(m, [von], [bis])
end AS Monate
FROM [Personaldaten].[dbo].[tblZugehoerigkeiten]
@PhilS Danke so klappt es, musste noch ein paar Kleinigkeiten ändern, aber dann gehts :)
not is null
in is not null
Tabellenzuordnung vor dem Feld.
SELECT MitarbeiterID_F,
case
when tblZugehoerigkeiten.bis is null
then DATEDIFF(m, [von], getdate())
when tblZugehoerigkeiten.bis is not null
then DATEDIFF(m, [von], [bis])
end AS Monate
FROM [Personaldaten].[dbo].[tblZugehoerigkeiten]