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

SQL 進階技巧:根據字段值動態為查詢結果列指定不同別名

     編輯:程式設計疑難解答

業務場景

表中字段 type 區分兩類數據(如:收入/支出),需根據該值將同三個數值字段(amt1, amt2, amt3)以不同業務語義別名輸出共 6 列,供前端直接展示及導出,純 SQL 實現。

解決方案:CASE WHEN 條件別名投影

SELECT
  id,
  type,
  CASE WHEN type = '收入' THEN amt1 END AS income_amt1,
  CASE WHEN type = '收入' THEN amt2 END AS income_amt2,
  CASE WHEN type = '收入' THEN amt3 END AS income_amt3,
  CASE WHEN type = '支出' THEN amt1 END AS expense_amt1,
  CASE WHEN type = '支出' THEN amt2 END AS expense_amt2,
  CASE WHEN type = '支出' THEN amt3 END AS expense_amt3
FROM business_table;

關鍵點

  • 不匹配的 CASE 返回 NULL,滿足「另三列為空」需求。
  • 列別名固定,前端可直接綁定,無需動態解析。
  • 若類型超過兩類,同理擴展 WHEN 分支。

進階:動態 SQL(僅作為了解)

若別名本身需根據數據動態生成,需使用存儲過程拼接 SQL 字符串執行,但會失去靜態類型檢查與計劃緩存優勢,不推薦常規業務使用。

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