1
我在我的P.EMP_PAY_DUE_TO_LEAVE_DATE字段中有NULLS,並試圖通過使用下面的代碼來消除它們,但NULLS仍然存在!COALESCE不工作?
SELECT DISTINCT V.EMP_CODE
, CASE
WHEN V.HIST_PERIOD < 10
THEN
CAST(V.HIST_YEAR AS VARCHAR) + RIGHT('0' + CAST (V.HIST_PERIOD + 3 AS VARCHAR), 2)
ELSE
CAST(V.HIST_YEAR + 1 AS VARCHAR) + RIGHT('0' + CAST (V.HIST_PERIOD - 9 AS VARCHAR) ,2)
END AS PAYPERIOD
, V.Department_Id
, CASE
WHEN MONTH (P.EMP_PAY_DUE_TO_LEAVE_DATE) >= MONTH(DATEADD(M, -1, GETDATE())
OR P.EMP_PAY_DUE_TO_LEAVE_DATE IS NULL
THEN
COALESCE
(
CONVERT
(
DECIMAL(10, 2)
, V.EMP_SORT_DESC
)
, 0
)/37.5
END AS FTE
我看不出我的代碼有什麼問題,但顯然存在!任何人都可以看到問題嗎?
供參考:我重新格式化了代碼,使其更易於閱讀/這樣做使隱含的其他內容變得明確 - 但對它進行了評論,因此很明顯它不在原始代碼中。 – JohnLBevan
@JohnLBevan - 你不應該進行編輯,使現有的答案無效。我刪除了「ELSE」,所以這個答案仍然有意義。 –
@馬丁史密斯:同意。供參考:我在答案存在之前做了編輯/只是爲了在回答之前讓自己和他人更易於閱讀代碼;因爲提問者說這個問題與合併有關,所以我沒有想到這種情況將會是我編輯並在上下文中看到的問題。 – JohnLBevan