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 40901 게시물 읽기
No. 40901
쿼리 질문입니다.
작성자
ㅃㅃ
작성일
2015-08-21 07:16
조회수
7,736

select *

from

(select  a

         , b

         , row_number() over(partition by pk1, pk2 order by date) rnum

from tab) a

where rnum = 1

 

위와 같은 쿼리가 있다고 가정했을 때 rnum = 1 이라는 조건에 의해서 파티션된 데이터 중 date가 가장 빠른 날짜의 데이터를 가져오게 될텐데요...

inline view 내의 결과에서 a 와 b라는 컬럼의 값이 각각 파티션 내에서 모두 동일하면 0, 하나라도 다른게 있으면 1 이라는 값을 리턴하게 하려면 어떻게 하면 될까요?

예를 들어  inline view 내의 결과가 아래와 같다고 하면

rnum   a     b

1         1      1        

2         1       2        

           0       1

최상위 select 절에서는 rnum = 1 인 값만 가져오지만   a는 0, b는 1   이런 결과를 가져오게 하는 겁니다.

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

질문에 많은 부분이 생략되어 있다는 느낌이 드네요.
생략돤 부분 때문에 질문이 모호해진 면도 있구요.
1. 그룹기준인 pk1, pk2 정렬기준인 date 가 Select 에 포함되지 않은 것이 의문이네요.
  - 이 값들이 포함되지 않는다면? 조회 자료가 의미가 없을 듯 한데요?
2. 최종 결과가 모호하네요.
  - a, b 의 값도 출력하고 원하는 결과 0, 1 도 함게 출력하는 건가요?
  - 아니면 a, b 필요 없이 0, 1 만 출력하면 되는건가요?
  - 0, 1 만 출력하는 것이라면?
  - 최초 값을 가져온다는 원래 쿼리와는 전혀 다른 의미의 쿼리가 됩니다.
  - 최초 값을 가져오는 것이 아닌 집계결과를 가져오는 쿼리가 되어 버리죠.
3. MS-SQL 쪽에도 똑같은 질문을 올리셨네요?
  - 정확한 DBMS 를 명시해주셔야 합니다.

마농(manon94)님이 2015-08-21 11:00에 작성한 댓글입니다.
이 댓글은 2015-08-21 11:00에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40904union 문의 [2]
이현정
2015-08-24
7615
40903SQL UPDATE 질문입니다. [2]
22일
2015-08-22
8140
40902Plan결과 고수님 의견을 듣고 싶습니다. [4]
궁금이.
2015-08-21
7860
40901쿼리 질문입니다. [1]
ㅃㅃ
2015-08-21
7736
40900select for update에 관한 질문...
...
2015-08-20
7622
40899SUBSTR 질문입니다. [2]
이현정
2015-08-19
7666
40898구분자를 통한 데이터 분리관련 질문~! 도와주세요 [2]
천하제일
2015-08-19
7999
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.028초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다