我正在開發下面的tsql查詢。我如何識別其中包含「1900%」的記錄?如何識別T-SQL中的DATETIME NULL記錄?
SELECT DISTINCT TICKET, COMPLAINT_LEVEL, COMPLETION_DATE, DATE_FILTER, YEAR(DATE_FILTER) AS YEAR_FILTER, MONTH(DATE_FILTER) AS MONTH_FILTER,
left(datename(month, DATE_FILTER), 3) + ' ''' +
RIGHT(year(DATE_FILTER), 2) AS SHORT_DATE_FILTER,
CASE WHEN DATE_FILTER < MONTH_END AND MONTH_END < CURRENT_DATE_END AND COMPLETION_DATE IS NULL THEN DATE_FILTER
WHEN DATE_FILTER < MONTH_END AND MONTH_END < CURRENT_DATE_END AND
COMPLETION_DATE IS NOT NULL AND ABS(DATEDIFF(DAY, COMPLETION_DATE, MONTH_END)) >= 1 AND DATE_FILTER < CURRENT_DATE_END THEN DATE_FILTER
ELSE 0 END AS ROW_TYPE
FROM #TEMP
--WHERE row_type = 0
--line above does not work
這是我的輸出是什麼樣子
它不會在上面的sql中工作。您無法與計算列進行比較。即使如此,它只能在1900年的第一天工作。但根據測試數據,這似乎已經足夠了。 –
數字與'date'數據類型不兼容。但'ROW_TYPE'顯然是'datetime'。我看不出爲什麼你認爲這不適用於上述查詢。這個簡單的例子似乎表明它會:「SELECT * FROM(SELECT GETDATE()UNION ALL SELECT 0)x(d)WHERE d = 0'。查詢返回一行'1900-01-01 00:00:00.000'的值。 –
我認爲你需要閱讀我的解決方案來澄清我的評論 –