我在获取数据时遇到了问题。这里有张桌子:
| ID | DDATE | STATUS |
|----|-----------------------|--------|
| 1 | 2000-01-01 01:00:00.0 | aaaaaa |
| 1 | 2000-01-01 02:00:00.0 | aaaaaa |
| 1 | 2000-01-01 03:00:00.0 | aaaaaa |
| 1 | 2000-01-01 04:00:00.0 | aaaaaa |
| 1 | 2000-02-01 05:00:00.0 | bbbbbb |
| 1 | 2000-02-01 06:00:00.0 | cccccc |
| 1 | 2000-02-01 07:00:00.0 | cccccc |
| 1 | 2000-02-01 08:00:00.0 | bbbbbb |
| 1 | 2000-02-01 09:00:00.0 | cccccc |
| 1 | 2000-02-01 10:00:00.0 | cccccc |
| 1 | 2000-02-01 11:00:00.0 | cccccc |
| 1 | 2000-02-01 12:00:00.0 | dddddd |
| 2 | 2000-01-01 13:00:00.0 | aaaaaa |
| 2 | 2000-02-01 14:00:00.0 | aaaaaa |
| 2 | 2000-02-01 15:00:00.0 | aaaaaa |
| 2 | 2000-02-01 16:00:00.0 | aaaaaa |
| 2 | 2000-03-01 17:00:00.0 | bbbbbb |
| 2 | 2000-03-01 18:00:00.0 | cccccc |
| 2 | 2000-03-01 19:00:00.0 | cccccc |
| 2 | 2000-04-01 20:00:00.0 | bbbbbb |
| 2 | 2000-04-01 21:00:00.0 | cccccc |
| 2 | 2000-04-01 22:00:00.0 | cccccc |
| 2 | 2000-04-01 23:00:00.0 | cccccc |
| 2 | 2000-04-01 23:30:00.0 | dddddd |
您需要获取每个 id 的每个状态序列的第一条(及时)记录:
| ID | DDATE | STATUS |
|----|-----------------------|--------|
| 1 | 2000-01-01 01:00:00.0 | aaaaaa |
| 1 | 2000-02-01 05:00:00.0 | bbbbbb |
| 1 | 2000-02-01 06:00:00.0 | cccccc |
| 1 | 2000-02-01 08:00:00.0 | bbbbbb |
| 1 | 2000-02-01 09:00:00.0 | cccccc |
| 1 | 2000-02-01 12:00:00.0 | dddddd |
| 2 | 2000-01-01 13:00:00.0 | aaaaaa |
| 2 | 2000-03-01 17:00:00.0 | bbbbbb |
| 2 | 2000-03-01 18:00:00.0 | cccccc |
| 2 | 2000-04-01 20:00:00.0 | bbbbbb |
| 2 | 2000-04-01 21:00:00.0 | cccccc |
| 2 | 2000-04-01 23:30:00.0 | dddddd |
我设法只获得每个 id 的第一个状态,而丢失了重复:
SELECT ID, MIN(DDATE) dd, STATUS FROM Table1
GROUP BY ID, STATUS
ORDER BY ID, dd
请至少告诉我方向。
UPD:可重现的示例http://sqlfiddle.com/#!4/3de9e/1/0。