sql-server - 在 SQL Server 中循环月份

标签 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 个这样的查询。

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

如何动态地执行此操作?

如何用循环来做到这一点?

最佳答案

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

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

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

关于sql-server - 在 SQL Server 中循环月份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28261576/

相关文章:

java - 您可以使用 JDBC 仅连接到实例而不指定数据库吗?

sql - 查询从 SQL Server 中的表中检索前两行

sql - 如何合并窗口内的重叠时间?

sql-server - 将日期名称(dw 脚本从 sqlserver 转换为 sqlite

sql - 将 ISNUMERIC() 与 sql_variant SQL Server 一起使用

sql - MDX 不显示最新版本的数据

sql-server - 在 SQL 层次结构数据中移动父 AND 子项

SQL Server 性能不佳,有很多 OR 和使用 UPPER() 的重复条件

tsql - 是否可以将 CASE 与 IN 一起使用?

c# - 比较 Entity Framework 4.1 中 Any() 与 Count() 生成查询的性能