Я пытаюсь использовать агрегатную функцию MIN()
и получить минимальную дату из двух столбцов, и мне удалось написать для этого SQL-запрос. Но если один из столбцов имеет значения NULL, мой запрос ниже принимает дату по умолчанию как «1900-01-01T00:00:00Z». Он должен брать дату либо из столбца 1, либо из столбца 2, в зависимости от того, какое значение имеет значение.
Вот схема и данные SQLFiddle.
+----+--------------+---------------+
| ID | ObservedDate | SubmittedDate |
+----+--------------+---------------+
| 1 | '2017-02-14' | '2017-02-15' |
| 1 | '2017-01-21' | '2017-01-22' |
| 2 | '2017-01-21' | |
+----+--------------+---------------+
Запрос
SELECT [ID],
CASE WHEN MIN(ObservedDate)<=MIN(SubmittedDate)
THEN COALESCE(MIN(ObservedDate),MIN(SubmittedDate))
ELSE COALESCE(MIN(SubmittedDate),MIN(ObservedDate)) end as RiskReferenceDate
FROM Measurements
group by ID
Причина, по которой я использовал COALESCE
, заключается в том, что я хочу, чтобы мой запрос учитывал данные из столбца со значением и игнорировал столбец с нулевым значением.
Ожидаемый результат
+----+-------------------+
| ID | RiskReferenceDate |
+----+-------------------+
| 1 | '2017-01-21' |
| 2 | '2017-01-21' |
+----+-------------------+