[설문조사 사이트 테스트]
이름 :
점넷(.Net)
분류 전체보기 (176)
점넷공간 (38)
COMPUTER (1)
.NET (29)
DB (36)
SCRIPT (3)
MarkUp & CSS (3)
OS (7)
IT Story (52)
Information (7)
«   2024/05   »
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 31
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
2007. 8. 14. 17:41
[DB]

참고 MSDN : http://msdn2.microsoft.com/ko-kr/library/ms177410.aspx

사용자 삽입 이미지
















검색엔진에 Pivot 이라고 검색을 하게되면 LCD 모니터의 Pivot 기능이라고 나올것이다.
일반적으로 모니터는 세로길이 보다는 가로길이가 더길다. 하지만 Pivot 기능이 있는 모니터는
모니터 화면이 90˚ 회전할수있다 즉 가로의 길이와 세로의 길이를 바꿀수가 있는것이다.
세로형태의 문서작업을할때 공간을 최대한 활용할수 있을것이다.
위에서 언급한 Pivot은 가로 와 세로를 바꾸는 것으로만 정의를 내렸다. 하지만
아래에 있는 SQL SERVER 에서 사용하는 Pivot은 어떤것이며 UnPivot은 무엇인지에 대해 알아보자.

저자정의 : Pivot는  한 필드의 데이터를 필드로 사용하여 해당 필드의 집계를 위한 함수이고
               UnPivot는 여러 필드명을 데이터로 변환해서 사용하기 위한 하뭇일것이다.

MSDN 정의 : 테이블 값 식을 다른 테이블로 변경할 수 있습니다. PIVOT은 식의 한 열에 포함된 여러 고유
                  값을 출력에서 여러 열로 변환하여 테이블 값 식을 회전하고 최종 출력에서 남은 열 값 중
                  원하는 값에 대해 필요에 따라 집계를 수행합니다


* 다음은 주석이 추가된 PIVOT 구문입니다. <MSDN 참조>

SELECT <non-pivoted column> ,
    [first pivoted column] AS <column name> ,
    [second pivoted column] AS <column name> ,
    ...
    [last pivoted column] AS <column name>
FROM
    ( <SELECT query that produces the data> )
    AS <alias for the source query>
PIVOT
(
    <aggregation function>( <column being aggregated> )
FOR
[<column that contains the values that will become column headers>]
    IN ( [first pivoted column] , [second pivoted column] ,
    ... [last pivoted column] )
) AS <alias for the pivot table>
<optional ORDER BY clause>


-- PIVOT 테스트를 위한 CTE
WITH PVTTABLE AS(

사용자 삽입 이미지

PIVOT 테스트를 위한 테이블


    SELECT '부산' 지역, '사과' 과일, 10 수량
    UNION ALL
    SELECT '부산' 지역, '바나나' 과일, 20 수량
    UNION ALL
    SELECT '서울' 지역, '사과' 과일, 10 수량
    UNION ALL
    SELECT '대구' 지역, '수박' 과일, 30 수량
    UNION ALL
    SELECT '서울' 지역, '사과' 과일, 40 수량
    UNION ALL
    SELECT '대구' 지역, '바나나' 과일, 25 수량
)

-- CTE 데이터를 PIVOT한 결과
SELECT 
사용자 삽입 이미지

PIVOT 테스트 결과


    과일, 서울, 부산, 대구, 대전
FROM
    PVTTABLE
    PIVOT
    (
        SUM(수량) -- 집계함수(AVE, COUNT, MAX, MIN, SUM) 사용
        FOR 지역 IN(서울,부산,대구,대전) -- 지역 필드의 데이터중 서울, 부산, 대구, 대전 항목을 필드로 변환
    ) PVT
* IN 함수에 들어가는 값은 필드가될 데이터이기 때문에 첫문자가 문자, _  혹은  숫자같은경우 []로 묶어서 사용하면 된다. (예: [01])


-- UNPIVOT 테스트를 위한 CTE
WITH UNPVTABLE AS(
사용자 삽입 이미지

UNPIVOT 테스트를 위한 테이블


    SELECT '바나나' 과일, NULL 서울, 20 부산, 25 대구
    UNION ALL
    SELECT '사과' , 50,10,NULL 
    UNION ALL
    SELECT '수박' , NULL ,NULL ,30
   )

-- CTE 데이터를 UNPIVOT한 결과
SELECT 
사용자 삽입 이미지

UNPIVOT 테스트 결과


    과일, 지역, 수량
FROM
    UNPVTABLE
    UNPIVOT
    (         -- 서울, 부산, 대구 필드명을 데이터로 변환후 지역 필드에 출력
        수량 FOR 지역 IN(서울, 부산, 대구) -- 수량 필드에 각필드의값 출력
    ) UNPVT                                        


━━━━━━━━━━━━━━━
by 한상국(han3925)
MAIL  han3925@gmail.com
         han3925@hotmail.com
BLOG pointnet.tistory.com
━━━━━━━━━━━━━━━