안녕하세요.
pivot 함수를 통해 아래와 같이 이벤트별 날짜 단위로 추출하고자 합니다.
event_no | title | 2015-06-01 | 2015-06-02 | 2015-06-03 | 2015-06-04 | 2015-06-05 | 2015-06-06 |
166 | 킹콩 | 1 | 2 | 1 | 2 | 1 | 4 |
474 | 울트라맨 | 1 | 2 | 1 | 5 | 6 | 8 |
484 | 티라노사우르스 | 5 | 6 | 6 | 4 | 4 | 1 |
select 쿼리는 만들었는데, 해당 쿼리를 함수나 프로시저로 만들고 싶거든요,,,,
PIVOT 사용시 컬럼명을 date로 받으려면 어떻게 해야하는지,,,도움이 필요합니다,,,ㅜㅜ(빨간색 부분이요...)
반복문으로 해야될 것 같은데,,, 잘 모르겠습니다ㅜ
대략적인 쿼리는 아래와 같습니다.( 다소 무식해보여도,,, 봐주세요,,, 처음 짜보는거라ㅜ)
SELECT *
FROM (
SELECT AAA.date_
, AAA.EVENT_NO
, AAA.title
, COUNT(*) as Count_User
FROM (
SELECT CONVERT(VARCHAR, A.UPD_DATE, 23) as date_
, A.EVENT_NO
, B.TITLE
, a.user_no
, COUNT(*) AS COUNT_
FROM EVENT_HISTORY A, EVENT B, USER D
WHERE 1=1
AND A.EVENT_NO = B.OBJ_NO
AND A.USER_NO = D.OBJ_NO
AND A.EVENT_NO IN(
SELECT OBJ_NO
FROM EVENT
WHERE 1=1
AND owner_company = 16
AND STATE <> 9
AND CONVERT(VARCHAR, start_date, 23) BETWEEN @START_DATE AND @END_DATE
)
AND substring(D.CLIENT_VERSION,0,2) != '1'
AND CONVERT(VARCHAR, A.UPD_DATE, 23) BETWEEN @START_DATE AND @END_DATE
GROUP BY CONVERT(VARCHAR, A.UPD_DATE, 23), A.EVENT_NO, A.USER_NO, B.TITLE
)AAA
GROUP BY AAA.date_, AAA.event_no, AAA.TITLE
) AS SOURCE
PIVOT(
SUM(Count_User) FOR DATE_ IN([2015-06-01]
,[2015-06-02]
,[2015-06-03]
,[2015-06-04]
,[2015-06-05]
,[2015-06-06]
,[2015-06-07]
,[2015-06-08]
,[2015-06-09]
,[2015-06-10]
,[2015-06-11]
,[2015-06-12]
,[2015-06-13]
,[2015-06-14]
,[2015-06-15]
,[2015-06-16]
,[2015-06-17]
,[2015-06-18]
,[2015-06-19]
,[2015-06-20]
,[2015-06-21]
,[2015-06-22]
,[2015-06-23]
,[2015-06-24]
,[2015-06-25]
,[2015-06-26]
,[2015-06-27]
,[2015-06-28]
,[2015-06-29]
,[2015-06-30])
) AS PVT
ORDER BY EVENT_NO
Comment 1
-
건우아빠
2015.07.16 16:43
동적쿼리를 이용하셔야 합니다.