資料來源
use tempdb
go
DROP TABLE IF EXISTS tblQ
CREATE TABLE tblQ (庫別 char(1) , 日期 char(2) , 類別 nvarchar(10) , 數量 int)
INSERT INTO tblQ (庫別 , 日期 , 類別 , 數量)
SELECT 'A' , '01' , N'螺絲-次' ,2
UNION ALL
SELECT 'A' , '01' , N'螺絲-全' ,1000
UNION ALL
SELECT 'B' , '01' , N'螺絲-次' ,3
UNION ALL
SELECT 'B' , '01' , N'螺絲-全' ,1100
UNION ALL
-- 以下為自行加入資料
SELECT 'C' , '02' , N'螺絲-次' , 999
UNION ALL
SELECT 'C' , '02' , N'螺絲-全' , 0
Q1:資料列運算要把資料列進行百分比運算後並產生一筆百分比資料
SELECT *
FROM
(
SELECT 庫別 , 日期 , 類別 , 數量
FROM tblQ
UNION ALL
SELECT 庫別 , 日期 , N'螺絲-率' , [螺絲-次] * 1.0 / NULLIF([螺絲-全] , 0) * 1.0
FROM tblQ AS P
PIVOT
(
SUM(數量) FOR 類別 IN ([螺絲-次] , [螺絲-全])
) AS PV
) AS F
ORDER BY
庫別 ,
日期 ,
CASE 類別
WHEN N'螺絲-次' THEN 1
WHEN N'螺絲-全' THEN 2
WHEN N'螺絲-率' THEN 3
ELSE 4
END ,
數量
Q2:資料轉置
把 A1 百分比資料進行轉置
把 A1 百分比資料進行轉置
;
WITH CTE AS
(
SELECT 庫別 , 日期 , 類別 , 數量
FROM tblQ
UNION ALL
SELECT 庫別 , 日期 , N'螺絲-率' , [螺絲-次] * 1.0 / NULLIF([螺絲-全] , 0) * 1.0
FROM tblQ AS P
PIVOT
(
SUM(數量) FOR 類別 IN ([螺絲-次] , [螺絲-全])
) AS PV
)
SELECT PV.*
FROM CTE AS P
PIVOT
(
SUM(數量) FOR 日期 IN ([01] , [02])
) AS PV
ORDER BY
庫別 ,
CASE 類別
WHEN N'螺絲-次' THEN 1
WHEN N'螺絲-全' THEN 2
WHEN N'螺絲-率' THEN 3
ELSE 4
END
沒有留言:
張貼留言