WITH T AS ( SELECT '2004' 년도1, 7 월, '연혁1' 내용 UNION ALL SELECT '2005' 년도1, 1 월, '연혁2' 내용 UNION ALL SELECT '2005' 년도1, 3 월, '연혁3' 내용 UNION ALL SELECT '2005' 년도1, 11 월, '연혁4' 내용 UNION ALL SELECT '2006' 년도1, 4 월, '연혁5' 내용 ) SELECT CASE rn WHEN 1 THEN 년도1 ELSE NULL END 년도2, 월, 내용 FROM ( SELECT T.*, ROW_NUMBER() OVER(PARTITION BY 년도1 ORDER BY 월 DESC) AS rn FROM T ) T ORDER BY 년도1 DESC, 월 DESC
여러가지 방법이 있겠지만 간단하게는 이렇게 하면 될 것 같네요
WITH t AS ( SELECT 2004 yyyy, 7 mm, '연혁1' v UNION ALL SELECT 2005, 1, '연혁2' UNION ALL SELECT 2005, 3, '연혁3' UNION ALL SELECT 2005, 11, '연혁4' UNION ALL SELECT 2006, 4, '연혁5' ) SELECT CASE GROUPING(mm) WHEN 1 THEN yyyy END yyyy , mm , v FROM t a GROUP BY GROUPING SETS ( (yyyy), (yyyy, mm, v) ) ORDER BY a.yyyy DESC , GROUPING(mm) DESC , mm DESC ;