原始表記錄運單明細、運單編號、付款方式(1/2)、運費。需按運單編號分組,將付款方式轉為列,顯示各方式運費小計及總計。
WITH table1(明細, 單號, 方式, 運費) AS (
SELECT 'L11','Y05',1,30 UNION ALL
SELECT 'L12','Y05',2,40 UNION ALL
SELECT 'L13','Y05',2,30 UNION ALL
SELECT 'L14','Y06',1,50 UNION ALL
SELECT 'L15','Y06',1,60 UNION ALL
SELECT 'L16','Y06',2,40
)
SELECT
單號,
[1] AS 方式1運費,
[2] AS 方式2運費,
ISNULL([1],0) + ISNULL([2],0) AS 總運費
FROM (
SELECT 單號, 方式, 運費 FROM table1
) t
PIVOT (
SUM(運費) FOR 方式 IN ([1], [2])
) p;
單號 方式1運費 方式2運費 總運費 Y05 30 70 100 Y06 110 40 150
SUM、COUNT、AVG 皆可,視業務而定。[1], [2]),動態列需動態 SQL。ISNULL/COALESCE 轉 0。若付款方式不固定,需構建動態 SQL 字串執行,或在應用層完成行列轉換。