Próbuję wykonać funkcję typu instrukcji IF w serwerze SQL.Oświadczenie SQL Server Case, gdy IS NULL
Tam, gdzie w polu jest NULL, chcę, aby wziął pole z jednej z tabel i dodał do niego 10 dni.
I jeśli to możliwe, utwórz kolejną kolumnę i dodaj 30 dni.
SELECT DISTINCT
B.[ID],
MAX(A.[START DATE]),
B.[STAT],
C.[POST DATE],
CASE
WHEN (C.[POST DATE] BETWEEN C.[EVENT DATE]+10 AND C.[EVENT DATE]+30) THEN 'GOOD'
END AS [BETTER VISIT],
CASE
WHEN B.[STAT] IS NULL THEN (C.[EVENT DATE]+10)
ELSE '-'
END AS [DATE]
FROM
#TEMP1 A
FULL OUTER JOIN #TEMP2 B
ON A.[ID]=B.[ID]
FULL OUTER JOIN #TEMP3 C
ON A.[ID]=C.[ID]
GROUP BY
B.[ID],
B.[STAT],
C.[POST DATE],
C.[EVENT DATE]
ORDER BY
A.[START DATE] DESC
Rezultatem będzie wyglądać trochę jak:
ID START DATE STAT POST DATE BETTER VISIT DATE DATE2
---------------------------------------------------------------------------
1 2013-01-01 GOOD 2013-11-01 GOOD - -
2 2013-03-01 NULL NULL NULL 2013-03-11 2013-03-31
Co jest nie tak z wyjściem you” Dostajesz teraz? –
Msg 242, poziom 16, Stan 3, wiersz 1 Konwersja typu danych varchar na typ danych datetime spowodowała przekroczenie zakresu wartości. – caffaddt
IsNull może pomóc. http://msdn.microsoft.com/en-us/library/ms184325.aspx – Oliver