Scrapbook/개발 및 프로그래밍
[MSSQL] mssql row -> column 변환(통계용)
가을이짱짱
2009. 4. 16. 09:54
반응형
순번 | 날짜 | menuid | 합계 |
1 | 2009-04-16 | coupon | 8 |
2 | 2009-04-16 | hot_moneylife | 1 |
3 | 2009-04-16 | main | 34 |
4 | 2009-04-16 | payinfo | 8 |
5 | 2009-04-16 | public | 11 |
6 | 2009-04-16 | sitemap | 5 |
7 | 2009-04-15 | coupon | 11 |
8 | 2009-04-15 | hot_chosun | 5 |
9 | 2009-04-15 | hot_moneylife | 18 |
10 | 2009-04-15 | main | 82 |
11 | 2009-04-15 | payinfo | 8 |
12 | 2009-04-15 | public | 12 |
13 | 2009-04-15 | sitemap | 4 |
14 | 2009-04-14 | coupon | 17 |
15 | 2009-04-14 | hot_chosun | 4 |
16 | 2009-04-14 | hot_moneylife | 24 |
17 | 2009-04-14 | main | 96 |
18 | 2009-04-14 | payinfo | 12 |
19 | 2009-04-14 | public | 14 |
20 | 2009-04-14 | sitemap | 5 |
순번 | 날짜 | 메인접속 | 할인쿠폰 | 공공정보 | 이용요금안내 | 사이트맵 | **2010 | **7218 |
1 | 2009-04-16 | 34 | 8 | 11 | 8 | 5 | 1 | 0 |
2 | 2009-04-15 | 82 | 11 | 12 | 8 | 4 | 18 | 5 |
3 | 2009-04-14 | 96 | 17 | 14 | 12 | 5 | 24 | 4 |
다음과 같이 해결.
strSQL="SELECT CONVERT(varchar(10), visitDate, 120) AS 날짜 ,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'main' THEN 1 ELSE 0 END) AS 메인접속,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'coupon' THEN 1 ELSE 0 END) AS 할인쿠폰,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'public' THEN 1 ELSE 0 END) AS 공공정보,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'payinfo' THEN 1 ELSE 0 END) AS 이용요금안내,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'sitemap' THEN 1 ELSE 0 END) AS 사이트맵,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'hot_moneylife' THEN 1 ELSE 0 END) AS '**2010' ,"
strSQL = strSQL& " SUM(CASE WHEN menuid = 'hot_chosun' THEN 1 ELSE 0 END) AS '**7218' "
strSQL = strSQL& " FROM TBL_VISITLOG "&strSQLEx&" GROUP BY CONVERT(varchar(10),visitDate, 120) "&strOrder
(여기서 strSQLEx이부분은 기간 설정 부분이니 상관없고 strOrder요것도 정렬 부분이니 신경 쓸 필요 無)
반응형