在SQL Server中循环执行月份

sal*_*lar 5 t-sql sql-server

每年我们都有12个月.我应该编写一个查询,每个月在一个表中选择.例如,我应该制作报告,告诉我每个月的交易次数.

我做错了,但做错了.

我每个月都写了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
Run Code Online (Sandbox Code Playgroud)

我有11个这样的查询.

最后我获取了我放入临时表的结果.

我怎么能动态地这样做?

我怎么能用循环呢?

And*_*mar 1

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

select  month(date_column)
,       sum(amount)
from    YourTable
group by
        month(date_column)
Run Code Online (Sandbox Code Playgroud)

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

  • 当然可以!如果省略“group by”,则默认为一组中的整个集合。您可以对任何列集进行“分组”,并使用“sum”等聚合函数来生成每组的统计信息。 (2认同)