首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQL 行轉列/交叉表:部門物資申請匯總顯示實現思路

     編輯:程式設計綜合問答

需求

多部門申請多物資,需生成「部門為行、物資為列、數量為值」的交叉表。

標準 SQL 實現(以 SQL Server/Oracle/PostgreSQL 為例)

-- 假設源表: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;

動態列(物資種類不固定)

  • SQL Server:PIVOT + 動態 SQL 拼裝列名。
  • Oracle:PIVOT XML 或 LISTAGG 生成 JSON 再前端渲染。
  • MySQL:GROUP_CONCAT 構建動態 CASE WHEN,PREPARE/EXECUTE 執行。
  • 通用最佳實踐:後端返回長表(dept, material, qty),前端用 PivotTable.js / AG Grid / ECharts 做交叉渲染,避免動態 SQL 維護困難。

參考資源

CSDN 博客《SQL 行列轉換完全指南》:https://blog.csdn.net/vipxiaotian/article/details/4409423

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved