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 41370 게시물 읽기
No. 41370
쿼리질문...감사합니다.
작성자
알럽디비(ilovedbdb)
작성일
2017-04-06 10:10ⓒ
2017-04-06 10:11ⓜ
조회수
6,898

WITH TMP AS

(

SELECT 101 TID, 3 SEQ, '20150101' REG_DT, '0002' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 101 TID, 2 SEQ, '20130101' REG_DT, '0002' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 101 TID, 1 SEQ, '20110101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 102 TID, 5 SEQ, '20170101' REG_DT, '0003' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 102 TID, 3 SEQ, '20160101' REG_DT, '0002' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 102 TID, 1 SEQ, '20150101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 103 TID, 2 SEQ, '20170101' REG_DT, '0002' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 103 TID, 1 SEQ, '20160101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 104 TID, 1 SEQ, '20170101' REG_DT, '0001' REG_NO, 'Y' USE_YN FROM DUAL

)

SELECT *

FROM TMP T1

WHERE 1=1

;

 

 

-- 결과조건

-- 결과값A : TID로 그룹핑하여 USE_YN = 'Y'인 값 (그룹중 1row만 존재함)

-- 결과값B : TID로 그룹핑하여 USE_YN = 'N'인 것들중 REG_DT DESC, REG_NO DESC 로 정렬시 제일 높은값

 

-- 결과데이터

-- TID | SEQ(결과값A) | SEQ(결과값B)

-- 101 3 2

-- 102 5 3

-- 103 2 1

-- 104 1 0 (by NVL)

 

이런결과값을 추출하고싶습니다. lead 함수도 사용해보았지만 잘안되네요..

도움주시면 감사하겠습니다.

 

 

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

WITH TMP AS

(

SELECT 101 TID, 3 SEQ, '20150101' REG_DT, '0002' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 101 TID, 2 SEQ, '20130101' REG_DT, '0002' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 101 TID, 1 SEQ, '20110101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 102 TID, 5 SEQ, '20170101' REG_DT, '0003' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 102 TID, 3 SEQ, '20160101' REG_DT, '0002' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 102 TID, 1 SEQ, '20150101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 103 TID, 2 SEQ, '20170101' REG_DT, '0002' REG_NO, 'Y' USE_YN FROM DUAL

UNION

SELECT 103 TID, 1 SEQ, '20160101' REG_DT, '0001' REG_NO, 'N' USE_YN FROM DUAL

UNION

SELECT 104 TID, 1 SEQ, '20170101' REG_DT, '0001' REG_NO, 'Y' USE_YN FROM DUAL

)

SELECT TID||' '||NVL(MAX(DECODE(USE_YN,'Y',SEQ)),'0')||' '||NVL(MAX(DECODE(USE_YN,'N',SEQ)),'0') TIDSEQ

FROM

(

SELECT TID, USE_YN, MAX(SEQ) KEEP (DENSE_RANK FIRST ORDER BY REG_DT DESC, REG_NO DESC) SEQ

FROM TMP T1

GROUP BY TID, USE_YN

)

GROUP BY TID

손재균(iikii)님이 2017-04-06 17:50에 작성한 댓글입니다.

감사합니다

알럽디비(ilovedbdb)님이 2017-04-10 16:04에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41373쿼리 속도 [1]
바랑
2017-04-12
7399
4137211g 깔았는데 실행이 안돼요 [1]
안정민
2017-04-09
6892
41371데이터가 시간대별로 합계가 나왔으면 합니다. [2]
도토리
2017-04-06
7052
41370쿼리질문...감사합니다. [2]
알럽디비
2017-04-06
6898
41368쿼리 결과에 추가로 정보를 보여 주려면 어떻게 해야 하나요 [1]
왕초보
2017-03-31
6612
41367NLS_NUMBERIC_CHARACTERS에 대해 질문드립니다.
이현석
2017-03-31
6616
41366월수 구하기 질문 드립니다. [1]
조형래
2017-03-30
6872
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다