달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

'MSSQL'에 해당되는 글 2건

  1. 2011.01.31 [MSSQL] PIVOT...
  2. 2010.07.02 [MSSQL]DB Table의 Field 정보 가져오기.

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 인 것들의 각각의  합계값을 출력 하라는 거죠.

이와 같이 하면 옆으로 돌아간 데이터가 나옵니다.
 물론 각 필드를 더 추가하면 더 많은 필드를 빼올 수도 있습니다.


Posted by SadDev
|
select col.name, col.column_id, st.name as DT_name, col.max_length, col.is_nullable, col.is_identity, defCst.definition 
from sys.columns col left outer join sys.types st on st.user_type_id = col.user_type_id 
left outer join sys.default_constraints defCst on defCst.parent_object_id = col.object_id and defCst.parent_column_id = col.column_id 
where col.object_id = object_id(N'dbo.Music') order by col.column_id
아래 이미지는 실행 결과..

컬럼의 이름, 아이디, 형식 , 크기, null, identity, 기본 값 이 나온다. (원래는 더 많은 정보가 나오지만 필요한것만 나오도록 엄청 많이 삭제....)

Posted by SadDev
|