У меня есть таблица, где хранятся временные данные. таблица имеет схему, похожую на:
ID INT NOT NULL IDENTITY(1,1)
RecordID INT NOT NULL
StartDate DATE NOT NULL
EndDate DATE NULL
И я пытаюсь определить даты начала и окончания каждого идентификатора записи, поэтому минимальный StartDate и максимальный EndDate. StartDate не имеет значения NULL, поэтому мне не нужно беспокоиться об этом, но мне нужен MAX (EndDate), чтобы обозначить, что в настоящее время это работает.
Важно, чтобы я сохранял значение NULL для EndDate и рассматривал его как максимальное значение.
Самая простая попытка (ниже) не работает, подчеркивая проблему, что MIN и MAX будут игнорировать NULLS (источник: http://technet.microsoft.com/en-us/library/ms179916.aspx).
SELECT recordid, MIN(startdate), MAX(enddate) FROM tmp GROUP BY recordid
Я создал скрипт SQL с базовой настройкой.
http://sqlfiddle.com/#!3/b0a75
Как я могу свести SQL Server 2008 к моей воле, чтобы получить следующий результат из данных, приведенных в SQLFiddle?
RecordId Start End
1 2009-06-19 NULL
2 2012-05-06 NULL
3 2013-01-25 NULL
4 2004-05-06 2009-12-01