У меня есть запрос SQL Server, который пытается выбрать NULL
, если в столбце PredComplDate
есть хотя бы один NULL
или последняя дата хранится как NVARCHAR(30)
Странно то, чтокогда я запускаю запрос, он возвращает правильные результаты, но когда мой коллега выполняет запрос на том же компьютере, он возвращает разные результаты.
Я сохранил таблицу, созданную, когда мой коллега выполнил запрос под другимимя и сравнил его с тем, который был создан при запуске запроса.все одинаково, количество записей, тип данных и т. д., но по какой-то причине приведенная ниже часть запроса не возвращает NULL
:
SELECT [Reference Number],
CASE
WHEN LEN(Predecessors)>0 AND MAX(COALESCE(PredComplDate,'31/12/2099'))='31/12/2099' THEN NULL
ELSE MAX(PredComplDate)
END AS LatestPredComplDate
FROM mytable33
GROUP BY [Reference Number],Predecessors
В чем проблема с этим запросом?
mytable33
был создан мной, а mytable22
создан моим сотрудником.когда я запрашиваю результаты идентичны:
SELECT Predecessors,[Reference Number], PredRefNo,PredComplDate FROM mytable22
SELECT Predecessors,[Reference Number], PredRefNo,PredComplDate FROM mytable33
![enter image description here](https://i.stack.imgur.com/IUzMV.jpg)
когда я запускаю вышеупомянутый запрос для обеих таблиц, результат отличается:
SELECT [Reference Number],
CASE
WHEN LEN(Predecessors)>0 AND MAX(COALESCE(PredComplDate,'31/12/2099'))='31/12/2099' THEN NULL
ELSE MAX(PredComplDate)
END AS LatestPredComplDate
FROM mytable22
GROUP BY [Reference Number],Predecessors
SELECT [Reference Number],
CASE
WHEN LEN(Predecessors)>0 AND MAX(COALESCE(PredComplDate,'31/12/2099'))='31/12/2099' THEN NULL
ELSE MAX(PredComplDate)
END AS LatestPredComplDate
FROM mytable33
GROUP BY [Reference Number],Predecessors
![enter image description here](https://i.stack.imgur.com/1Sf5G.jpg)
Ожидаемый результат NULL
для LastestPredComplDate