在 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
从日期时间列中提取数字月份。
每年我们有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
从日期时间列中提取数字月份。