多部門申請多物資,需生成「部門為行、物資為列、數量為值」的交叉表。
-- 假設源表:dept_material(dept, material, qty)
SELECT dept,
SUM(CASE WHEN material = 'A4紙' THEN qty ELSE 0 END) AS "A4紙",
SUM(CASE WHEN material = '筆' THEN qty ELSE 0 END) AS "筆",
SUM(CASE WHEN material = '檔案盒' THEN qty ELSE 0 END) AS "檔案盒",
SUM(qty) AS 總計
FROM dept_material
GROUP BY dept;
PIVOT + 動態 SQL 拼裝列名。PIVOT XML 或 LISTAGG 生成 JSON 再前端渲染。GROUP_CONCAT 構建動態 CASE WHEN,PREPARE/EXECUTE 執行。CSDN 博客《SQL 行列轉換完全指南》:https://blog.csdn.net/vipxiaotian/article/details/4409423