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

T-SQL 時間遞增迴圈:按月統計供應商出票張數自動化查詢

     編輯:關於SqlServer

需按月統計一段期間的資料時,撰寫迴圈自動遞增日期區間,避免手動修改查詢條件。

迴圈範本

DECLARE @date1 DATE, @date2 DATE;
DECLARE @startdate DATE = '2010-06-01', @enddate DATE = '2011-07-01';
DECLARE @count INT = 1, @countsum INT = DATEDIFF(MONTH, @startdate, @enddate);

SET @date1 = @startdate;
SET @date2 = DATEADD(MONTH, 1, @startdate);

WHILE @count < @countsum BEGIN
    -- 執行單月查詢
    SELECT SUM(PassengerCount) AS 張數
    FROM dbo.Orders
    WHERE ProviderID = (SELECT UserId FROM dbo.User WHERE Username = 'wind2006')
      AND OrderTime BETWEEN @date1 AND @date2;

    SET @date1 = DATEADD(MONTH, 1, @date1);
    SET @date2 = DATEADD(MONTH, 1, @date2);
    SET @count = @count + 1;
END

關鍵函數說明

  • DATEDIFF(MONTH, start, end):計算月份差作為迴圈次數。
  • DATEADD(MONTH, 1, date):日期遞增一個月,自動處理跨年與月末邊界。
  • 變數化查詢條件,支援動態 SQL 或直接在迴圈中執行靜態查詢。

同樣邏輯可擴充至週、日、季等任意時間顆粒度統計需求。

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