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 40682 게시물 읽기
No. 40682
쿼리 질문입니다.....
작성자
류시형(amikis)
작성일
2015-01-19 11:13
조회수
6,549

안녕하십니까? 간단한거 같으면서도 잘 되질 않네요?

고수님들의 한수 부탁 드립니다.

주문번호로 group by 해고 거래처로 order by 해서

순번과 같이 rank() 의 결과를 얻고 싶습니다.

주문번호        거래처                순번

==============================

 

주문번호A    거래처1    ===>   1
주문번호A    거래처2    ===>   1
주문번호A    거래처3    ===>   1
주문번호B    거래처4   ===>    2
주문번호B    거래처5   ===>    2
주문번호C    거래처6   ===>    3
주문번호D    거래처7   ===>    4
주문번호E     거래처8   ===>   5

==============================

감사합니다.

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

SELECT 주문번호, 거래처
     , DENSE_RANK() OVER(ORDER BY 주문번호) 순번
  FROM t
 GROUP BY 주문번호, 거래처
;

마농(manon94)님이 2015-01-19 13:54에 작성한 댓글입니다.

마농님~ 항상 감사합니다. 그런데, 정렬은 거래처로 하고 싶은데... 여의치가 않습니다.

감사합니다....

류시형님이 2015-01-19 14:08에 작성한 댓글입니다. Edit

예시 자료가 거래처로 정렬해도 주문번호가 전혀 안섞이는 자료네요?
원하시는게 어떤건지 잘 설명이 안되는 예시자료네요.
예시자료를 좀더 꼬아서 주셨어야 했을 듯 하네요.
예를 들어 거래처9 에 해당하는 주문번호B 가 존재하는 예시자료요.
이 때 이 레코드의 순번이 뭐가 나와야 하는지?
정렬결과 어느부분에 위치해야 하는지?

마농(manon94)님이 2015-01-19 14:29에 작성한 댓글입니다.

마농님께서 주신 쿼리는 주문번호로 정렬이 되고, 거래처는 정렬이 안됩니다.

주문번호        거래처                순번

==============================

 주문번호A    거래처5   ===>   1
주문번호B    거래처6    ===>   2
주문번호C    거래처6    ===>   3
주문번호B    거래처3   ===>    4
주문번호B    거래처5   ===>    4
주문번호D    거래처1   ===>    5
주문번호D    거래처2   ===>    5
주문번호D     거래처4   ===>   5

==============================

저는 주문번호는 GROUP BY만 되고,, 거래처로만 정렬을 하려고 합니다....

감사합니다....

류시형님이 2015-01-19 14:44에 작성한 댓글입니다. Edit

결과가 거래처순 정렬이 아닌데요?

마농(manon94)님이 2015-01-19 14:55에 작성한 댓글입니다.

WITH t AS
(
SELECT '주문번호A' 주문번호, '거래처1' 거래처 FROM dual
UNION ALL SELECT '주문번호B', '거래처2' FROM dual
UNION ALL SELECT '주문번호C', '거래처2' FROM dual
UNION ALL SELECT '주문번호B', '거래처3' FROM dual
UNION ALL SELECT '주문번호B', '거래처4' FROM dual
UNION ALL SELECT '주문번호D', '거래처5' FROM dual
UNION ALL SELECT '주문번호D', '거래처6' FROM dual
UNION ALL SELECT '주문번호D', '거래처7' FROM dual
)
SELECT 주문번호, 거래처
     , SUM(flag) OVER(ORDER BY 거래처, 주문번호) 순번
  FROM (SELECT 주문번호, 거래처
             , DECODE(LAG(주문번호) OVER(ORDER BY 거래처, 주문번호)
               , 주문번호, 0, 1) flag
          FROM t
       --GROUP BY 주문번호, 거래처
        )
;


예시도 이상하고 설명도 이상해서....
제가 이해한 내용을 정리해보면...
거래처별로 정렬하여 순번을 부여하되
같은 주문번호가 연결되는 경우엔 같은 순번을 부여하고 싶다.
질문에 나온 Group By 는 꼭 필요한 것인지 의문이 들어서...
설명하는 과정에서 잘못된 용어 선택이 아닌가 싶기도 하고 해서...
주석처리 했습니다.

마농(manon94)님이 2015-01-19 15:11에 작성한 댓글입니다.
이 댓글은 2015-01-19 15:12에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40685질문드립니다! 테이블에 not null 제약 조건 삽입 에러.. [1]
지유현
2015-01-20
7199
40684select view error (ora-00990) [1]
정용석
2015-01-20
7319
40683특정합계단위의 그룹 생성 도움이 필요합니다 [5]
박용대
2015-01-20
7256
40682쿼리 질문입니다..... [6]
류시형
2015-01-19
6549
40681데이터 반복 질문~!! [2]
천하제일
2015-01-19
6379
40679복구에러 [1]
대전시민
2015-01-16
6605
40678Milliseconds 를 HH24:MI:SS.FF3 로 표현하기 문의드립니다. [1]
탱자나무
2015-01-15
6257
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다