我很苦惱爲什麼下面的case語句不起作用。SQL SERVER CASE當ELSE語句不能正常工作
我想要做的是轉換的一個月的日期(「死亡日期」)分成兩個字符,以便月份成爲01月變成02和十月至十二月繼續作爲他們的兩個字符長度
然而,代碼似乎被絆倒我
SELECT
LEN(MONT(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH)) AS length_of_month,
(CASE
WHEN LEN(MONTH(CAST(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH as VARCHAR(20)))) = 1
THEN CONCAT('0', MONTH(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH))
END) AS DERIVED_MOD
FROM
RAW.dbo.ONS_Death_DOD201516FYQ1
上述工程和轉換那些有1位至2,但是當我嘗試實施第二個選項下面它似乎並沒有工作。
SELECT
LEN(MONTH(ONS.DATE_OF_DEATH)) as length_of_month,
(CASE
WHEN LEN(MONTH(CAST(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH as VARCHAR(20)))) = 2
THEN MONTH(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH)
WHEN LEN(MONTH(CAST(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH as VARCHAR(20)))) = 1
THEN CONCAT('0', MONTH(RAW.dbo.ONS_Death_DOD201516FYQ1.DATE_OF_DEATH))
END) AS DERIVED_MOD
FROM
RAW.dbo.ONS_Death_DOD201516FYQ1
任何幫助,非常感謝。
Case expression,not case statement ... – jarlh
這似乎是SQL Server。我加了標籤。 – trincot
我會做'案件len(...)2當月(...)當1然後concat(...)結束'保存一些打字。 – jarlh