Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

CASE / IF

Begonnen von Xoar, September 01, 2021, 14:33:50

⏪ vorheriges - nächstes ⏩

Xoar

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!

PhilS

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]

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Xoar

@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]