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

SQL 進階:單條查詢實現「中心-服務站」兩級報表輸出

     編輯:程式設計綜合問答

需求

原始表 t(center, station),輸出格式:

中心A
    服務站1
    服務站2
中心B
    服務站3

解法:UNION ALL + 排序欄位

SELECT center, station
FROM (
    SELECT DISTINCT center AS c, center, '' AS station FROM t
    UNION ALL
    SELECT center, '', station FROM t
) d
ORDER BY c, center DESC, station;

關鍵技巧

  • 第一個子查詢:產生「中心標題行」,station='' 佔位。
  • 第二個子查詢:產生「服務站明細行」,center 重複以便排序分組。
  • 排序欄位 c:僅來自第一個子查詢,確保所有中心標題行排在該中心明細之前;center DESC 使標題行 (station='') 排在明細行前。
  • UNION ALL:比 UNION 快 (不去重),此處業務允許重複中心名。

擴展:多層級報表

同理可擴展至 3+ 層:每層一個 UNION ALL 子查詢,外層 ORDER BY 疊加排序鍵。

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