MSSQL 을 사용하다가 보면 아래와 같은 데이터를 만날 수 있다.
RegDate Code Count
2011-01-27 AU 55
2011-01-27 BE 1
2011-01-27 BR 2
2011-01-27 CA 22
2011-01-27 CH 2
2011-01-27 CN 150
2011-01-27 DE 20
2011-01-27 ES 30
2011-01-27 FR 4
2011-01-27 GB 59
2011-01-27 Han 1
2011-01-27 HK 81
2011-01-27 HU 1
2011-01-27 IE 2
대충 위와 같이 특정 일에 어느 코드로(국가코드) 몇건의 접속이 있었나 로그를 남긴것이다..
하지만 나는 이걸 가로로 나열하고 싶었다...
그래서 찾아낸것이 PIVOT..
RegDate KR US JP CN
2011-01-27 262 290 97 150
좀 데이터가 많아서 4개 국가코드만 빼내어 봤다..
이걸 가능하게 하는 코드 PIVOT을 보자
우선 첫번째 소스의 경우
SELECT RegDate, Code, Count(*) as Cnt From [TABLE]
GROUP BY RegDate, Code
인 상태라.. 날짜 + 코드로 GROUP BY 를 사용하고 각각의 Cnt 를 뽑았다.
이걸 PIVOT을 회전시키려면
SELECT RegDate, KR, US, JP, CN FROM -- (내가 뽑아낼 데이터 필드의 value값을 적어주면 된다)
( SELECT RegDate, Code, Count(*) as Cnt From [TABLE] GROUP BY RegDate, Code ) A
PIVOT
( Sum(Cnt) FOR Code in (KR, US, JP, CN) ) PV -- Code필드의 Value가 KR, US, JP, CN 인 것들의 각각의 합계값을 출력 하라는 거죠.
이와 같이 하면 옆으로 돌아간 데이터가 나옵니다.
물론 각 필드를 더 추가하면 더 많은 필드를 빼올 수도 있습니다.
'데이터베이스 > MSSQL' 카테고리의 다른 글
[MSSQL] 탭문자 확인 및 제거 (0) | 2010.11.18 |
---|---|
[MSSQL] 데이터베이스에서 이메일 보내기 (0) | 2010.09.02 |
[MSSQL]2008 백업 파일을 2005에서 복원하기 (0) | 2010.07.21 |
[MSSQL] Database 리스트 (0) | 2010.07.02 |
[MSSQL]DB Table의 Field 정보 가져오기. (0) | 2010.07.02 |