MSSQL 쿼리 문의 드립니다. 0 5 892

by 경상도곰남 [SQLServer] [2016.07.28 11:22:28]


MSSQL에서 내용을 아래와 같이 보여주고 싶습니다.

쿼리를 어떻게 해야 할지 모르겠습니다.

고수님들의 답변 부탁드립니다.

데이터

년도 | 월 | 내용
2004 |  7   | 연혁1
2005 |  1   | 연혁2
2005 |  3   | 연혁3
2005 |  11  | 연혁4
2006 |  4   |  연혁5

 

변경 테이터

년도 | 월 | 내용

2006|       | 
      |    4  |  연혁5
   
2005|     |
      |  11|  연혁4
      |    3|   연혁3
      |    1|   연혁2

2004|     |  
       |   7|    연혁1

   

 

 

by 랑에1 [2016.07.28 12:48:41]
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

여러가지 방법이 있겠지만 간단하게는 이렇게 하면 될 것 같네요


by 경상도곰남 [2016.07.28 13:16:46]

답변 감사합니다.

즐거운 하루 보내세요

 


by 마농 [2016.07.28 13:00:23]
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
;

 


by 경상도곰남 [2016.07.28 13:16:25]

답변 감사합니다.

즐건하루 보내세요..


by 우리집아찌 [2016.07.28 13:24:26]

GROUPING SETS 해보다가 포기했는데... 되는군요..

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입