col1 | col2 | |
---|---|---|
1 | A | 2014-09-02 |
2 | A | 2014-09-02 |
3 | A | 2014-09-03 |
4 |
B | 2014-09-04 |
5 | B | 2014-09-05 |
6 | A | 2014-09-06 |
7 | B | 2014-09-07 |
8 | B | 2014-09-08 |
9 | C | 2014-09-10 |
데이터가 이렇게 있습니다..
group by col1 로 그룹바이를 해야 하는데.
1번줄~3번줄에 있는 자료와 6번줄에 있는 자료가 따로 그룹바이가 되어야 합니다.
차이를 알수 있는 값은 col2의 날짜값밖에 없구요..
날짜값으로 소팅했을때 위 리스트가 나옵니다..
이경우 1번주~3번줄의 데이터와 6번줄의 데이터를 따로 그룹바이 할 수 있는 방법이 없을까요?
제머리로는 생각이 안나서 여쭤봅니다.
한 수 가르침 부탁드립니다.
안되는거라면 안되는 거란 답이라도 듣고 싶네요..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | 죄송합니다. 문제를 1 , 3 , 6, 9 ( 띄엄띄엄 ) 로 봤네요 -- A와 B가 같은 날짜에 있는 것은 없다는걸로 판단하고 작성됐습니다. WITH t ( col1, col2 ) AS ( SELECT 'A' , '2014-09-02' FROM DUAL UNION ALL SELECT 'A' , '2014-09-02' FROM DUAL UNION ALL SELECT 'A' , '2014-09-03' FROM DUAL UNION ALL SELECT 'B' , '2014-09-04' FROM DUAL UNION ALL SELECT 'B' , '2014-09-05' FROM DUAL UNION ALL SELECT 'A' , '2014-09-06' FROM DUAL UNION ALL SELECT 'B' , '2014-09-07' FROM DUAL UNION ALL SELECT 'B' , '2014-09-08' FROM DUAL UNION ALL SELECT 'C' , '2014-09-10' FROM DUAL ) SELECT col1 , col2 , SUM ( grp ) OVER ( ORDER BY col2 ) sum_ FROM ( SELECT col1 , col2 , DECODE ( LAG ( col1 ) OVER ( ORDER BY col2 ), col1, 0, 1 ) grp FROM t ) |