首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 按年月統計某列值分布:GROUP BY YEAR/MONTH 實戰

     編輯:關於SqlServer

業務場景

統計表 AA 中 YWLX(業務類型)列在每年每月的各類型筆數。

核心 SQL

SELECT 
    YEAR(AA_YWRQ) AS YEARS,
    MONTH(AA_YWRQ) AS Months,
    AA_YWLX,
    COUNT(AA_YWLX) AS Number
FROM AA
GROUP BY YEAR(AA_YWRQ), MONTH(AA_YWRQ), AA_YWLX
ORDER BY YEARS, Months, AA_YWLX;

關鍵點解析

  • YEAR()/MONTH() 直接作用於日期列,無需預先計算衍生列
  • GROUP BY 必須包含 SELECT 列表中所有非聚合列(年、月、業務類型)
  • 建議在 AA_YWRQ 上建立索引以加速分組聚合

結果示例

YEARSMonthsAA_YWLXNumber
20161類型A15
20161類型B8
20162類型A22

原始數據樣本 統計結果

擴展:動態透視輸出(行轉列)

-- 將月份轉為列,類型為行
SELECT AA_YWLX,
    SUM(CASE WHEN YEAR(AA_YWRQ)=2016 AND MONTH(AA_YWRQ)=1 THEN 1 ELSE 0 END) AS [2016-01],
    SUM(CASE WHEN YEAR(AA_YWRQ)=2016 AND MONTH(AA_YWRQ)=2 THEN 1 ELSE 0 END) AS [2016-02]
FROM AA
GROUP BY AA_YWLX;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved