Группировать по дате с помощью SQL-запроса? - PullRequest
0 голосов
/ 26 ноября 2010

У меня есть представление

ID   S.No  DateFr        DateTo
---  ----- ------       ---------
1    63    01/01/2010    01/01/2010
1    63    01/01/2010    01/11/2010
2    64    01/01/2010    01/01/2010 
2    64    01/01/2010    01/11/2010
3    65    01/01/2010    01/01/2010
3    65    01/01/2010    01/11/2010

Теперь я хочу получить результаты вроде

ID   S.No  DateFr       DateTo
1     63   01/01/2010   01/11/2010
2     64   01/01/2010   01/11/2010
3     65   01/01/2010   01/11/2010

Примечание. В записях изменяется только DateFr, поэтому я хочу, чтобы он переходил от строки к столбцу. Идентификатор не является фиксированным, он может быть неограниченным, например, 1,1,1 ------ 30,30,30. Я использую DB2 с ISeries.

Ответы [ 4 ]

3 голосов
/ 27 ноября 2010

Это должно быть так просто:

select id, s.no, min(datefr), max(dateto) from your_table group by id, s.no
1 голос
/ 07 декабря 2010

Используйте Max(), Case When и Group By.

На мой взгляд, эту технику называли "Pivot" или "Crosstab".

1 голос
/ 26 ноября 2010
SELECT ID,S.No,dateFr,DateTo  FROM your_table GROUP BY ID,S.No,dateFr,DateTo 
0 голосов
/ 26 ноября 2010

Возможно, вы захотите использовать команду SQL Server PIVOT.

Проверьте это

...