database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 39514 게시물 읽기
No. 39514
[질문]구분이 바뀔때마다 새로 순번 채번
작성자
김구환(kim9hwan)
작성일
2012-06-29 17:39ⓒ
2012-06-29 17:41ⓜ
조회수
5,143

 

거래처  상품    일자     구분 순번
111111 AAAAAAA 2012-06-01 N    1  -> 1
111111 AAAAAAA 2012-06-02 N    2  -> 2
111111 AAAAAAA 2012-06-04 N    3  -> 3
111111 AAAAAAA 2012-06-05 N    4  -> 4
111111 AAAAAAA 2012-06-07 N    5  -> 5
111111 AAAAAAA 2012-06-11 N    6  -> 6
111111 AAAAAAA 2012-06-15 N    7  -> 7
111111 AAAAAAA 2012-06-18 Y    1  -> 1
111111 AAAAAAA 2012-06-19 Y    2  -> 2
111111 AAAAAAA 2012-06-21 N    8  -> 1
111111 AAAAAAA 2012-06-23 N    9  -> 2
111111 AAAAAAA 2012-06-28 Y    3  -> 1

222222 BBBBBBB 2012-06-01 N    1  -> 1
222222 BBBBBBB 2012-06-02 Y    1  -> 1
222222 BBBBBBB 2012-06-04 N    2  -> 1
222222 BBBBBBB 2012-06-05 Y    2  -> 1
222222 BBBBBBB 2012-06-07 Y    3  -> 2
222222 BBBBBBB 2012-06-11 N    3  -> 1
222222 BBBBBBB 2012-06-15 N    4  -> 2
222222 BBBBBBB 2012-06-18 Y    4  -> 1
222222 BBBBBBB 2012-06-19 Y    5  -> 2
222222 BBBBBBB 2012-06-21 Y    6  -> 3
222222 BBBBBBB 2012-06-23 Y    7  -> 4
222222 BBBBBBB 2012-06-28 Y    8  -> 5

 

결론부터 말씀드리자면 구분이 연속으로 5개 Y인 상품을 구하려고 합니다.

row_number(), rank()를 사용하니 구분이 바뀌어도 기존 순번값에 더하기가 되어 원하는 결과가 나오지 않습니다.

나올 수 있을것 같기도 한데 도저히 안되네요.

고수님들의 도움을 받고자 합니다.

이 글에 대한 댓글이 총 2건 있습니다.

WITH t AS
(
SELECT '111111' cd, 'AAAAAAA' item, '2012-06-01' dt, 'N' gb FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-02', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-04', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-05', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-07', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-11', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-15', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-18', 'Y' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-19', 'Y' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-21', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-23', 'N' FROM dual
UNION ALL SELECT '111111', 'AAAAAAA', '2012-06-28', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-01', 'N' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-02', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-04', 'N' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-05', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-07', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-11', 'N' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-15', 'N' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-18', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-19', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-21', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-23', 'Y' FROM dual
UNION ALL SELECT '222222', 'BBBBBBB', '2012-06-28', 'Y' FROM dual
)
SELECT cd, item, dt, gb
     , ROW_NUMBER() OVER(PARTITION BY cd, item, rn1-rn2, gb ORDER BY dt) rn
  FROM (SELECT cd, item, dt, gb
             , ROW_NUMBER() OVER(PARTITION BY cd, item ORDER BY dt) rn1
             , ROW_NUMBER() OVER(PARTITION BY cd, item, gb ORDER BY dt) rn2
          FROM t
        )
;

마농(manon94)님이 2012-07-02 09:48에 작성한 댓글입니다.
이 댓글은 2012-07-02 09:49에 마지막으로 수정되었습니다.

마농님 감사합니다.

위 문제를 해결하기 위해 여러 글을 검색해봤는데 그때마다 마농님께서 다 해결을 해주셨더군요.

몇일간 머리 싸매고 고민하던걸 한방에 해결해주셔서 정말 다시한번 감사드립니다.

 

김구환(kim9hwan)님이 2012-07-03 09:47에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39518저렴한 DB TOOL 추천부탁드립니다 [3]
TOAD말고
2012-07-03
6646
39517insert 문안에 substr 함수를 쓰고 싶어요..isql = "insert into cit10501 (" [1]
정명규
2012-07-02
4645
39515각 종 사 이 트 해 킹 작 업 해 드 립 니 다
박광재
2012-06-30
4154
39514[질문]구분이 바뀔때마다 새로 순번 채번 [2]
김구환
2012-06-29
5143
39513[질문] 본말과 약어 혼용된 문자열에서 약어 변환하는 방법 문의 [2]
fly_sky
2012-06-29
3864
39512[질문] 저에게는 너무나도 어려운 쿼리 질문 입니다 ㅠㅠ [2]
솜사탕
2012-06-29
4610
39510코드값 맵핑 / 맵핑 관계 나타내는 방법 문의 [1]
쿼리OTL
2012-06-26
4382
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다