aa | bb | cc | dd |
1 | 가 | 10 | 서울 |
2 | 가 | 10 | 경기 |
3 | 가 | 15 | 서울 |
4 | 나 | 20 | 서울 |
5 | 나 | 20 | 경기 |
6 | 다 | 30 | 서울 |
7 | 다 | 35 | 서울 |
8 | 다 | 30 | 경기 |
9 | 다 | 35 | 경기 |
위에처럼 데이터베이스에 저장이 되어있고 밑에처럼 테이블 출력하고 싶은데 안되네요..
어떻게 해야되나요??
설명을 하자면 '가'라는 동명인이 3명의 나이가 10,10,15살입니다.그런데 서울,경기,서울에 살아서 밑에처럼
나이가 똑같은 10살은 같이 묶어서 한줄에 서울,경기에 산다고 표시가 되어있고 15살은 따로 서울이라고 밑에 썼습니다
aa | bb | cc | dd | |
1 | 가 | 10 | 서울 | 경기 |
2 | 가 | 15 | 서울 | |
3 | 나 | 20 | 서울 | 경기 |
4 | 다 | 30 | 서울 | 경기 |
5 | 다 | 35 | 서울 | 경기 |
/* 오라클로 짰습니다. DD가 가변적이면 다이나믹 쿼리로 하셔야합니다 DD집합이 고정적이면 다음과 같이 하셔도 됩니다. */ WITH T AS ( SELECT 1 AA, '가' BB, 10 CC, '서울' DD FROM DUAL UNION ALL SELECT 2 , '가' , 10 , '경기' FROM DUAL UNION ALL SELECT 3 , '가' , 15 , '서울' FROM DUAL UNION ALL SELECT 4 , '나' , 20 , '서울' FROM DUAL UNION ALL SELECT 5 , '나' , 20 , '경기' FROM DUAL UNION ALL SELECT 6 , '다' , 30 , '서울' FROM DUAL UNION ALL SELECT 7 , '다' , 35 , '서울' FROM DUAL UNION ALL SELECT 8 , '다' , 30 , '경기' FROM DUAL UNION ALL SELECT 9 , '다' , 35 , '경기' FROM DUAL ) SELECT ROWNUM , A.* FROM ( SELECT BB , CC , MAX(DECODE(DD,'서울','서울')) LCL1, MAX(DECODE(DD,'경기','경기')) LCL2 FROM T GROUP BY BB , CC ORDER BY BB , CC ) A
mysql에서는 DECODE다른 역활을 다르다고 case문 쓰라고 해서 썼는데..안됩니다..
WITH T AS (
SELECT 1 AA, '가' BB, 10 CC, '서울' DD FROM DUAL UNION ALL
SELECT 2 , '가' , 10 , '경기' FROM DUAL UNION ALL
SELECT 3 , '가' , 15 , '서울' FROM DUAL UNION ALL
SELECT 4 , '나' , 20 , '서울' FROM DUAL UNION ALL
SELECT 5 , '나' , 20 , '경기' FROM DUAL UNION ALL
SELECT 6 , '다' , 30 , '서울' FROM DUAL UNION ALL
SELECT 7 , '다' , 35 , '서울' FROM DUAL UNION ALL
SELECT 8 , '다' , 30 , '경기' FROM DUAL UNION ALL
SELECT 9 , '다' , 35 , '경기' FROM DUAL
)
SELECT ROWNUM , A.*
FROM
(
SELECT BB , CC ,
, MAX(CASE dd WHEN '서울' THEN dd END) 서울
, MAX(CASE dd WHEN '경기' THEN dd END) 경기
FROM T
GROUP BY BB , CC
ORDER BY BB , CC
) A