방이름 | 2014-01-01 | 2014-01-02 | 2014-01-03 |
1번방 | 김말자 | NULL | NULL |
1번방 | NULL | 김남자 | 김남자 |
1번방 | 김여자 | 김여자 | NULL |
현재 이렇게 나오고있습니다.
아래처럼 나오게할려고하는데 도저히 안되네요...
방법좀 ㅠㅠ알려주세요 ㅠㅜ
방이름 | 2014-01-01 | 2014-01-02 | 2014-01-03 |
1번방 | 김말자 | 김남자 | 김남자 |
1번방 | 김여자 | 김여자 | NULL |
Comment 1
-
jyo2
2014.12.13 15:06
SELECT '1' X, '1번방' A,'김말자' B ,NULL C,NULL D
UNION ALL
SELECT '2' ,'1번방',NULL,'김남자','김남자'
UNION ALL
SELECT '3', '1번방','김여자','김여자',NULL
)
, BB AS (
SELECT * FROM AA
)
SELECT DISTINCT
A "방이름"
,CASE WHEN B IS NULL
THEN (SELECT BB.B FROM BB WHERE BB.X = (SELECT MAX(X) FROM BB WHERE BB.X < AA.X AND BB.B IS NOT NULL))
ELSE B
END "2014-01-01" --널일경우 위와 병합
,CASE WHEN C IS NULL
THEN (SELECT BB.C FROM BB WHERE BB.X = (SELECT MIN(X) FROM BB WHERE BB.X > AA.X AND BB.C IS NOT NULL))
ELSE C
END "2014-01-02" --널일경우 아래와 병합
,CASE WHEN D IS NULL
THEN (SELECT BB.D FROM BB WHERE BB.X = (SELECT MIN(X) FROM BB WHERE BB.X > AA.X AND BB.D IS NOT NULL))
ELSE D
END "2014-01-03" --널일경우 아래와 병합
FROM AA