在SQL Server中循环执行月份

时间:2015-02-01 10:07:18

标签: sql-server tsql

每年我们都有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

我还有11个这样的查询。

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

我该如何动态地执行此操作?

我怎么能用循环呢?

1 个答案:

答案 0 :(得分:1)

您可以使用group by每月生成统计信息:

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

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