私はこのサンプルデータを持っています
+------+------------+------------+
| CODE | START_DATE | END_DATE |
+------+------------+------------+
| 0001 | 2012-01-01 | 2012-01-31 |
+------+------------+------------+
| 0001 | 2012-02-01 | 2012-02-29 |
+------+------------+------------+
| 0001 | 2012-03-01 | NULL |
+------+------------+------------+
| 0002 | 2012-02-01 | 2012-02-29 |
+------+------------+------------+
| 0002 | 2012-03-01 | 2012-03-31 |
+------+------------+------------+
| 0002 | 2012-04-01 | NULL |
+------+------------+------------+
| 0003 | 2012-02-01 | 2012-02-29 |
+------+------------+------------+
| 0003 | 2012-03-01 | 2012-03-31 |
+------+------------+------------+
DDL
CREATE TABLE SAMPLE
(
CODE VARCHAR(4),
START_DATE DATETIME,
END_DATE DATETIME
)
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0001', {d '2012-01-01'}, {d '2012-01-31'})
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0001', {d '2012-02-01'}, {d '2012-02-29'})
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0001', {d '2012-03-01'}, NULL)
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0002', {d '2012-02-01'}, {d '2012-02-29'})
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0002', {d '2012-03-01'}, {d '2012-03-31'})
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0002', {d '2012-04-01'}, NULL)
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0003', {d '2012-02-01'}, {d '2012-02-29'})
INSERT INTO SAMPLE (CODE, START_DATE, END_DATE) VALUES ('0003', {d '2012-03-01'}, {d '2012-03-31'})
このデータを取得する予定です
+------+------------+------------+
| CODE | START_DATE | END_DATE |
+------+------------+------------+
| 0001 | 2012-01-01 | NULL |
+------+------------+------------+
| 0002 | 2012-02-01 | NULL |
+------+------------+------------+
| 0003 | 2012-02-01 | 2012-03-31 |
+------+------------+------------+
現在SQL Server 2005で、このクエリを使用しています
SELECT CODE,
MIN(START_DATE) AS START_DATE,
CASE
WHEN MAX(ISNULL(END_DATE, {d '9999-12-31'})) = {d '9999-12-31'}
THEN NULL
ELSE
MAX(END_DATE)
END AS END_DATE
FROM SAMPLE
GROUP BY CODE
私はこれまでに NULL 値をだましている 9999-12-31
これに対するより良い解決策を探しています
ありがとうございました