1
У меня есть NULLS в поле P.EMP_PAY_DUE_TO_LEAVE_DATE, и я попытался устранить их, используя следующий бит кода, но 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
Я не вижу ничего плохого с моим кодом, но ясно, что есть! Может ли кто-нибудь увидеть проблему?
FYI: Я переформатировал код, чтобы упростить его чтение /, делая это явным неявным явным, но прокомментировал его, поэтому ясно, что он не был в исходном коде. – JohnLBevan
@JohnLBevan - Вы не должны вносить изменения, которые недействительны для существующих ответов. Я удалил 'ELSE', поэтому этот ответ по-прежнему имеет смысл. –
@MartinSmith: Согласен. FYI: Я сделал редактирование до того, как существовал ответ/просто, чтобы сделать код более читаемым для себя и других, прежде чем отвечать; так как вопросник сказал, что проблема связана с объединением, мне не приходило в голову, что дело будет вопросом до тех пор, пока я не сделаю редактирование и не увижу его в контексте. – JohnLBevan