在 SQL 服务器中循环遍历月份

Loop through month in SQL Server

每年我们有12个月。我应该每个月写一个 select 的查询 table 。例如,我应该制作显示每个月交易计数的报告。

我做到了,但是方法不对。

我每个月写了 12 个查询。

像这样:

SET @MONTH12M = (SELECT SUM(Amount) AS TOT
                 FROM [fidilio].[dbo].[CardTransactionLog] CL
                 JOIN CardTransaction CT ON CT.CardTransactionLogId = CL.CardTransactionLogId
                 WHERE (cl.TransactionPersianTimeStamp > N'1393/12/01' 
                        AND cl.TransactionPersianTimeStamp< N'1393/12/31')
)

INSERT INTO #TEMP(MonthValue, CountValue, TypeValue) 
   SELECT 
       12,
       CASE WHEN @MONTH12M IS NULL THEN 0 ELSE  @MONTH12M END,4

我还有 11 个这样的查询。

最后我获取了我放入临时 table 的结果。

我怎样才能动态地做到这一点?

如何使用循环来实现?

您可以使用group by每月生成统计数据:

select  month(date_column)
,       sum(amount)
from    YourTable
group by
        month(date_column)

T-SQL 函数 month 从日期时间列中提取数字月份。