[SQL] 에서의 SQL 서버 방법 피벗에 여러 컬럼
SQL에서의 SQL 서버 방법 피벗에 여러 컬럼
이것은 내 샘플 표, 난 범주 열을 돌리 행과 판매, 재고 및 대상을 얻으려면
카테고리는 행 대신에 열 및 열 대신에, 상기 아래에 도시 된 바와 같이, 이런 형태의 샘플을 출력 할
해결법
-
==============================
1.샘플 테이블 :
샘플 테이블 :
DECLARE @Table1 TABLE (Branch varchar(9), Category varchar(9), Sales INT,Stock INT,Target INT) ; INSERT INTO @Table1 (Branch, Category, Sales, Stock,Target) VALUES ( 'mumbai', 'panel', 10,4,15), ( 'mumbai', 'AC', 11,7,14), ( 'mumbai', 'Ref', 7,2,10), ( 'Delhi', 'panel',20,4,17), ( 'Delhi', 'AC', 5,2,12), ( 'Delhi', 'Ref', 10,12,22) ;
IN SQL 서버 스크립트 :
Select BRANCH,COL,[panel],[AC],[Ref] from ( select Branch,Category,COL,VAL from @Table1 CROSS APPLY (VALUES ('Sales',Sales), ('Stock',Stock), ('Target',Target))CS (COL,VAL))T PIVOT (MAX(VAL) FOR Category IN ([panel],[AC],[Ref]))PVT ORDER BY Branch DESC
-
==============================
2.당신은 다음 피벗 문에 열 이름을 변경 해.
당신은 다음 피벗 문에 열 이름을 변경 해.
처럼
SELECT * FROM ( SELECT Branch, Category, Category+'1' As Category1, Category+'2' As Category2, Sales, Stock, Target FROM TblPivot ) AS P -- For Sales PIVOT ( SUM(Sales) FOR Category IN ([Panel], [AC], [Ref]) ) AS pv1 -- For Stock PIVOT ( SUM(Stock) FOR Category1 IN ([Panel1], [AC1], [Ref1]) ) AS pv2 -- For Target PIVOT ( SUM(Target) FOR Category2 IN ([Panel2], [AC2], [Ref2]) ) AS pv3 GO
이제 갈 준비가 ....
당신은 당신이 필요로하는 열을 기준으로 합 그룹에 PV3의 집계를 사용할 수 있습니다.
-
==============================
3.솔루션 아래에보십시오
솔루션 아래에보십시오
-- Applying pivoting on multiple columns SELECT * FROM ( SELECT Category, Sales, FROM TblPivot ) AS P -- For Sales PIVOT ( SUM(Sales) FOR Category IN ([Panel], [AC], [Ref]) ) AS pv1 union all -- For Stock SELECT * FROM ( SELECT Category, Stock, FROM TblPivot ) AS P PIVOT ( SUM(Stock) FOR Category IN ([Panel], [AC], [Ref]) ) AS pv2 union all -- For Target SELECT * FROM ( SELECT Category, Target, FROM TblPivot ) AS P PIVOT ( SUM(Target) FOR Category IN ([Panel], [AC], [Ref]) ) AS pv3 GO
-
==============================
4.다음과 같은 작업을해야,
다음과 같은 작업을해야,
select * FROM ( SELECT Branch, Category, Sales, Stock, Target FROM Table1 ) AS P unpivot ( [Value] FOR [OutPut] IN (sales,stock,[target]) )unpvt pivot ( max([Value]) for Category in (Panel,AC,Ref) )pvt order by Branch Desc
from https://stackoverflow.com/questions/38067490/in-sql-server-how-to-pivot-for-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 매개 변수화 SQL 쿼리 (0) | 2020.06.18 |
---|---|
[SQL] 두 테이블 사이의 SQL 동일한 단위는 1 개 셀에서 주문 번호를 필요로 (0) | 2020.06.18 |
[SQL] 포스트 그레스 기능에 대한 사용자 정의 유형의 배열을 전달하는 방법 (0) | 2020.06.18 |
[SQL] SQL Server 2008의 절 '에서'테이블 이름에 대한 변수를 사용하여 (0) | 2020.06.18 |
[SQL] 에서 java.lang.UnsatisfiedLinkError : java.library.path에는 sqljdbc_auth 없다 (0) | 2020.06.18 |