최근들어 SQL를 해보면서
[TEST_TABLE]
하나의 키(SEQNO)를 기준으로 여러개의 Row가 나올 때
조건에 따라서 Row를 각 키의 컬럼으로 돌려야 할 경우가 종종 생겼다.
이런 방법으로 해주면 쉽게 바꿀 수 있다.
SELECT SEQNO,
MIN(DECODE(TFLAG, 1, TCODE)) TCODE1,
MIN(DECODE(TFLAG, 1, TNAME)) TNAME1,
MIN(DECODE(TFLAG, 2, TCODE)) TCODE2,
MIN(DECODE(TFLAG, 2, TNAME)) TNAME2
FROM TEST_TABLE
WHERE TFLAG IN (1, 2)
GROUP BY SEQNO
# 더 효율적인 방법을 아시는 분은 가르침을 부탁드립니다.
[TEST_TABLE]
SEQNO | TFLAG | TCODE | TNAME | |
1 | 2 | 1 | 2TC1 | 2TN1 |
2 | 2 | 2 | 2TC2 | 2TN2 |
3 | 5 | 1 | 5TC1 | 5TN1 |
4 | 5 | 2 | 5TC2 | 5TN2 |
5 | 7 | 2 | 7TC2 | 7TN2 |
하나의 키(SEQNO)를 기준으로 여러개의 Row가 나올 때
조건에 따라서 Row를 각 키의 컬럼으로 돌려야 할 경우가 종종 생겼다.
SEQNO | TCODE1 | TNAME1 | TCODE1 | TNAME2 | |
1 | 2 | 2TC1 | 2TN1 | 2TC2 | 2TN2 |
2 | 5 | 5TC1 | 5TN1 | 5TC2 | 5TN2 |
3 | 7 | 7TC2 | 7TN2 |
이런 방법으로 해주면 쉽게 바꿀 수 있다.
SELECT SEQNO,
MIN(DECODE(TFLAG, 1, TCODE)) TCODE1,
MIN(DECODE(TFLAG, 1, TNAME)) TNAME1,
MIN(DECODE(TFLAG, 2, TCODE)) TCODE2,
MIN(DECODE(TFLAG, 2, TNAME)) TNAME2
FROM TEST_TABLE
WHERE TFLAG IN (1, 2)
GROUP BY SEQNO
# 더 효율적인 방법을 아시는 분은 가르침을 부탁드립니다.
'Dev::DB > Oracle' 카테고리의 다른 글
ODP.NET 에서 Parameter 사용할 때.... (0) | 2014.11.26 |
---|---|
분할 조회 쿼리 (0) | 2013.12.03 |
START WITH ~ CONNECT BY ~ 에서 말단 Leaf (0) | 2012.07.24 |
달력 SQL (0) | 2011.03.17 |
Oracle 계층적 트리구조 START WITH ~ CONNECT BY ~ ORDER SIBLINGS BY (0) | 2010.01.18 |