열 을 돌 리 는 SQL SERVER PIVOT 와 용법 에 대한 상세 한 설명
WEEK_INCOME(WEEK VARCHAR(10),INCOME DECIMAL)
우 리 는 먼저 아 날로 그 데 이 터 를 삽입 합 니 다.
INSERT INTO WEEK_INCOME
SELECT ' ',1000
UNION ALL
SELECT ' ',2000
UNION ALL
SELECT ' ',3000
UNION ALL
SELECT ' ',4000
UNION ALL
SELECT ' ',5000
UNION ALL
SELECT ' ',6000
UNION ALL
SELECT ' ',7000
일반적으로 우리 가 가장 자주 사용 하 는 조 회 는 일주일 중 매일 또는 며칠 의 수입 을 조회 하 는 것 이다.예 를 들 어 월요일 부터 일요일 까지 의 모든 수입 을 조회 하 는 것 이다.
SELECT WEEK,INCOME FROM WEEK_INCOME
다음 검색 결과 집합 을 가 져 옵 니 다:WEEK INCOME
월요일 1000
화요일 2000
수요일 3000
목요일 4000
금요일 5000
토요일 6000
일요일 7000
그러나 일부 상황 에서(흔히 일부 보고서 에서)우 리 는 한 줄 에 월요일 부터 일요일 까지 의 수입 을 표시 하고 싶 습 니 다.이때 조회 결과 집 은 이렇게 해 야 합 니 다.
월요일 화요일 수요일 목요일 금요일 토요일 일요일
1000 2000 3000 4000 5000 6000 7000
이 경우 SQL 쿼 리 문 구 는 다음 과 같이 쓸 수 있 습 니 다.
SELECT
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ],
SUM(CASE WEEK WHEN ' ' THEN INCOME END) AS [ ]
FROM WEEK_INCOME
하지만 SQL SERVER 2005 에서 더 간편 한 방법 을 제공 한 것 이 바로'PIVOT'관계 연산 자 였 다.(반대로'열 전 행'은 UNPIVOT)이 고,다음은 PIVOT 를 사용 하여'행 전 열'을 실현 하 는 SQL 문 구 를 말한다.
SELECT [ ],[ ],[ ],[ ],[ ],[ ],[ ]
FROM WEEK_INCOME
PIVOT
(
SUM(INCOME) for [week] in([ ],[ ],[ ],[ ],[ ],[ ],[ ])
)TBL
MSDN 에서 PIVOT 에 대한 용법 을 참고 하 십시오.http://technet.microsoft.com/zh-cn/library/ms177410(v=sql.105).aspx
그러나 MSDN 의 묘 사 는 너무 규범 적 이 고 엄숙 해서 나 는 한참 을 보 았 지만 PIVOT 를 어떻게 사용 하 는 지 알 지 못 해서 PIVOT 안의 문법 적 의 미 를 잘 모르겠다.그래서 구 글 은 많은 자료 와 위 에서 언급 한 WEEKINCOME 표 의 예 를 시험 하여 최종 적 으로 그 용법 을 밝 혔 다.인터넷 상에 서 박문 한 편 이 잘 해석 되 었 다.http://rely1020.blog.ithome.com.tw/post/1606/39111기본적으로 내 가 쓰 고 싶 은 것 은 이 박문 을 참조 하고 자신의 개인 적 인 이 해 를 더 하 는 것 이다.
PIVOT 문법 을 이해 하려 면 마이크로소프트 가 왜 이렇게 PIVOT 를 디자인 하 는 지 알 아야 한다.그러나 나 는 현실 적 인 수요 가 디자인 방향 을 탄생 시 키 는 것 이 라 고 믿는다.그래서 결국은 우 리 는'행 열'이 무엇 인지 알 아야 한다.
정상 적 인 상황 에서 의 조회 결 과 는 다음 과 같다.
월요일 1000
화요일 2000
수요일 3000
목요일 4000
금요일 5000
토요일 6000
일요일 7000
열 을 돌 린 후 다음 과 같 습 니 다:
월요일 화요일 수요일 목요일 금요일 토요일 일요일
1000 2000 3000 4000 5000 6000 7000
즉,행 이 열 을 바 꾼 후에 원래 의 한 열의 값 이 열 로 바 뀌 었 습 니 다.여기 서 원래 WEEK 열의 값 인'월요일','화요일'...'일요일'은 열 을 만 들 었 고 우리 가 해 야 할 또 다른 일 은 바로 이 열의 값 을 계산 하 는 것 입 니 다.(여기 서'계산'은 사실은 PIVOT 안의 집합 함수(sum,avg 등)입 니 다.
지금 주석 을 결합 하여 PIVOT 문법 을 분석 해 보 세 요.http://rely1020.blog.ithome.com.tw/post/1606/39111,안에서 말 한 PIVOT 문법의 세 가지 절차 가 매우 중요 하 다):
SELECT [ ],[ ],[ ],[ ],[ ],[ ],[ ]-- PIVOT ( ) “*” , ( )
FROM WEEK_INCOME -- PIVOT ( , PIVOT , ) select , ,
PIVOT
(
SUM(INCOME) for [week] in([ ],[ ],[ ],[ ],[ ],[ ],[ ])-- PIVOT , , 。 SUM , (sum), (avg) min,max 。 week_income week “ ”, income 1000, income 500, sum, “ ” 1500 。 for [week] in([ ],[ ]...) for [week] week , “ ”。 , , ? in , , in “ ” “ ”( ,in week ," ")。 ,SUM(INCOME) for [week] in([ ],[ ],[ ],[ ],[ ],[ ],[ ]) , : [week] " "," "," "," "," "," "," " , income 。
)TBL--
이상 은 제 가 PIVOT 에 대한 이해 입 니 다.최선 을 다 해 표현 하 겠 습 니 다.그 나 저 나 개인 적 으로 이해 하 는 방식 도 다 릅 니 다.제 가 박문 을 많이 읽 기 시 작 했 을 때 PIVOT 의 용법 을 알 지 못 했 습 니 다.결 과 는 억지로 예 와 다른 사람의 박문 을 통 해 생각 을 더 해서 알 게 되 었 습 니 다.그래서 여러분 이 이 편 을 본 후에 도 이해 하지 못 한다 면 정상 적 입 니 다.예 에 맞 춰 자신 이 생각 하 는 것 을 더 하면 천천히 이해 할 수 있 습 니 다.총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
우분투에 SQL 서버 설치Microsoft SQL Server는 오늘날 업계에서 가장 눈에 띄는 데이터베이스 중 하나입니다. 이번 포스팅에서는 우분투에 설치하는 방법을 알려드리겠습니다. sudo 권한이 있는 계정 1단계: 터미널 열기 단축키...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.