그룹관련 sql 질문 입니다. 0 2 1,401

by 살별 [SQL Query] [2011.11.21 09:36:05]


안녕하세요 오라클 고수 여러분...
주말내내 고민만 하다가 이제서야 도움을 요청 드립니다....

no    |    str    |    group    |
-------------------------------------------------
1    |    ab    |    0 |
2 | cd | 0 |
3 | ef | 0 |
4 | gh | 60 |
5 | ij | 0 |
6 | kl | 0 |
7 | mn | 30 |
8 | mn | 30 |
9 | mn | 0 |

이런 형식의 자료가 있습니다.
order by 는 no를 기준으로 하면서 group 컬럼을 데이터 순서에 따라서 그룹을 지을 수 있는 방법이 있나요?
말로 설명하자니 잘 설명이 안되네요...아래 원하는 "zz" 컬럼 데이터 입니다.
도움 주시면 정말 감사하겠습니다...

no | str | group |    zz        |
-----------------------------------------------------------------
1 | ab | 0 |    1        |
2 | cd | 0 | 1 |
3 | ef | 0 | 1 |
4 | gh | 60 | 2 |
5 | ij | 0 | 3 |
6 | kl | 0 | 3 |
7 | mn | 30 | 4 |
8 | mn | 30 | 4 |
9 | mn | 0 | 5    |
by 이재현 [2011.11.21 10:42:18]
WITH T AS(
SELECT 1 NO, 'ab' STR, '0' GRP FROM DUAL
UNION ALL SELECT 2 NO, 'cd' STR, '0' "group" FROM DUAL
UNION ALL SELECT 3 NO, 'ef' STR, '0' "group" FROM DUAL
UNION ALL SELECT 4 NO, 'gh' STR, '60' "group" FROM DUAL
UNION ALL SELECT 5 NO, 'ij' STR, '0' "group" FROM DUAL
UNION ALL SELECT 6 NO, 'kl' STR, '0' "group" FROM DUAL
UNION ALL SELECT 7 NO, 'mn' STR, '30' "group" FROM DUAL
UNION ALL SELECT 8 NO, 'mn' STR, '30' "group" FROM DUAL
UNION ALL SELECT 9 NO, 'mn' STR, '0' "group" FROM DUAL
)
SELECT NO, STR, SUM( DECODE(GRP, LO, 0, 1 ) ) OVER( ORDER BY NO ) ZZ
FROM (
SELECT NO, STR, GRP, LAG(GRP, 1 ) OVER(ORDER BY NO ) LO
FROM T
)

by 살별 [2011.11.21 11:16:27]
오홋.....감사합니다 ㅎ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입