[퀴즈] 행을 열로, 열을 행으로 변환
[원본]과 같이 26개의 알파벳과 순번이 주어졌을 때
[결과]와 같이 구분컬럼과 7개의 컬럼으로 조회되는 쿼리를 작성하세요.
WITH t AS
(
SELECT CHR(LEVEL + 64) c
, LEVEL v
FROM dual
CONNECT BY LEVEL <= 26
)
SELECT *
FROM t
;
[원본] | [결과] | ||||||||||
C | V | GB1 | GB2 | V1 | V2 | V3 | V4 | V5 | V6 | V7 | |
A | 1 | 1 | 1 | A | B | C | D | E | F | G | |
B | 2 | 1 | 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
C | 3 | 2 | 1 | H | I | J | K | L | M | N | |
D | 4 | 2 | 2 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
E | 5 | 3 | 1 | O | P | Q | R | S | T | U | |
F | 6 | 3 | 2 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | |
G | 7 | 4 | 1 | V | W | X | Y | Z | |||
H | 8 | 4 | 2 | 22 | 23 | 24 | 25 | 26 | |||
I | 9 | ||||||||||
J | 10 | ||||||||||
K | 11 | ||||||||||
L | 12 | ||||||||||
M | 13 | ||||||||||
N | 14 | ||||||||||
O | 15 | ||||||||||
P | 16 | ||||||||||
Q | 17 | ||||||||||
R | 18 | ||||||||||
S | 19 | ||||||||||
T | 20 | ||||||||||
U | 21 | ||||||||||
V | 22 | ||||||||||
W | 23 | ||||||||||
X | 24 | ||||||||||
Y | 25 | ||||||||||
Z | 26 |
[정답보기] 트리플클릭.
SELECT *
FROM (SELECT c
, TO_CHAR(v) v
, CEIL(v / 7) gb1
, MOD(v - 1, 7) + 1 gb3
FROM t
)
UNPIVOT ( v FOR gb2 IN (c AS 1, v AS 2) )
PIVOT ( MIN(v) FOR gb3 IN (1 v1, 2 v2, 3 v3, 4 v4, 5 v5, 6 v6, 7 v7) )
ORDER BY gb1, gb2
;