[英]CASE in SQL Server with multiple conditions
我在 SQL 服務器上工作以生成一些結果。 我有兩列, Auth
和DOB
以及要考慮的三個條件:
問題是因為我對 DOB 使用 DATE 類型,所以它為第三個條件創建了一個問題,因為它只是 yyyy 格式。
這是我正在使用的代碼
CASE
WHEN Auth IN ('Y', 'YES')
THEN CAST(REPLACE(DOB, '-', '') AS DATE)
WHEN Auth IN ('N', 'NO') AND DATEDIFF(YEAR, DOB@TODAY) <= 89
THEN YEAR(DOB)
WHEN Auth IN ('N', 'NO') AND DATEDIFF(YEAR, DOB@TODAY) > 89
THEN '1900'
ELSE ''
END AS BIRTHDATE
任何人都可以幫助我如何處理案例本身嗎?
嘗試這個。 看起來您在第二個條件中遇到了類型沖突,即返回 INT 數據類型。 您的語句說第二個條件應該按原樣返回 DOB,它應該是 VARCHAR 數據類型以與 CASE 語句的其他條件保持一致。
SELECT CASE
WHEN LEFT(Auth, 1) = 'Y' THEN FORMAT(DOB, 'yyMMdd')
WHEN LEFT(Auth, 1) = 'N'
AND DATEDIFF(YEAR, DOB, @TODAY) <= 89 THEN CAST(DOB AS VARCHAR)
WHEN LEFT(Auth, 1) = 'N'
AND DATEDIFF(YEAR, DOB, @TODAY) > 89 THEN '1900'
ELSE ''
END AS BIRTHDATE
FROM dbo.children AS c;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.