Я прочитал больше этих вопросов, чем хочу признать в отношении этого вопроса, однако все, что я пробовал из ответов, найденных здесь, по-прежнему терпит неудачу. Итак, поехали...
Я пытаюсь сравнить несколько дат из нескольких таблиц, чтобы найти самую последнюю дату. Соединения в запросе работают нормально, так как я делаю другие сравнения, и они работают нормально. Однако всякий раз, когда я пытаюсь запустить этот случай, я не получаю синтаксических ошибок или чего-то еще, что просто не выполняется в ELSE, даже если условия были выполнены. Это на SQL Server 2008R2.
Код:
SELECT
[OTHER COLUMNS],
'MOST_RECENT_DATE' = Case
WHEN A.Date > B.Date AND A.Date > C.Date AND A.Date > D.Date THEN convert(varchar, A.Date,30)
WHEN B.Date > A.Date AND B.Date > C.Date AND B.Date > D.Date THEN convert(varchar, B.Date,30)
WHEN C.Date > A.Date AND C.Date > B.Date AND C.Date > D.Date THEN convert(varchar, C.Date,30)
WHEN D.Date > A.Date AND D.Date > B.Date AND D.Date > C.Date THEN convert(varchar, D.Date,30)
ELSE 'ATTENTION'
END
FROM TABLE E
LEFT JOIN TABLE A ON E.other = A.other
LEFT JOIN TABLE B ON E.other = B.other
LEFT JOIN TABLE C ON E.other = C.other
LEFT JOIN TABLE D ON E.other = D.other
Когда я ввожу одно сравнение, оно работает и возвращает мне дату, т.е.
CASE
WHEN A.Date > B.Date THEN CONVERT(varchar,A.Date,30)
ELSE 'WHATEVER'
END
Таким образом, проблема должна заключаться в множественных сравнениях, возможно, я просто слишком долго смотрел на это, и мне нужно уйти, но я не могу понять, почему это проваливается к другому, когда я знаю условие выполнено.
Мысли и соображения высоко ценятся в продвинутых. Если кому-то нужна дополнительная информация или мне нужно внести ясность, пожалуйста, дайте мне знать.
SELECT [OTHER COLUMNS], A.Date, B.Date, C.Date, D.Date, 'MOST_RECENT_DATE' = ...
? Таким образом, вы можете увидеть, есть ли проблема со сравнением нулевых дат. - person zedfoxus   schedule 11.09.2015