[MSSQL] mssql row -> column 변환(통계용)

2009. 4. 16. 09:54Scrapbook/개발 및 프로그래밍

반응형
순번 날짜 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요것도 정렬 부분이니 신경 쓸 필요 無)
반응형

'Scrapbook > 개발 및 프로그래밍' 카테고리의 다른 글

터치 모드의 변경 감지  (0) 2010.04.30
그래픽과 애니메이션  (0) 2010.04.26
영흥도 포인트  (0) 2007.09.27
base64.dll + 자동테이블 명세서 출력 + Copy Handler  (0) 2007.05.10
MD5 알고리즘  (0) 2007.04.20