SQL 添加一周的总和行并在最后添加总计

2024-02-25

我有一个表,其中包含 numberofCalls、Date、CallsNotRecieved 等列。

我需要一种方法来获取一个月的记录,但在每个星期六结束时我必须显示一周的总计,毕竟我必须显示本月的总计。

在 SQL Server 中可以吗?有帮助吗?


您应该向我们提供有关数据结构的更多信息。假设你的[Date]列的类型datetime,并且您希望所有日期/周总计/月总计在一列中:

set datefirst 7

select 
    case 
        when grouping(cast(datepart(week, [Date]) as varchar(255)))=1 then '<monthtotal>'       
        when grouping(cast([Date] as date))=1 then '<weektotal>'        
        else cast(cast([Date] as date) as varchar(255))
    end as Period
    ,CallsNotRecieved = sum(CallsNotRecieved)
    ,NumberOfCalls = sum(numberofCalls)
from <yourtable>
group by 
    grouping sets(  
    (cast(datepart(month, [Date]) as varchar(255)), cast(datepart(week, [Date]) as varchar(255)),cast([Date] as date)),
    (cast(datepart(month, [Date]) as varchar(255)), cast(datepart(week, [Date]) as varchar(255))),
    (cast(datepart(month, [Date]) as varchar(255)))
    )

您可以弄清楚如何做到这一点,而无需set datefirst,插入周/月数字而不是 weektotal 和 Monthtotal,并确保数据集通过使用进行排序order by grouping(), and order by [Period]

编辑: 在sql server 2005中,因为没有grouping sets,人们必须使用WITH ROLLUP(或者更糟 -WITH CUBE) 子句,然后过滤掉不需要的分组组合grouping(<column_name>)=1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL 添加一周的总和行并在最后添加总计 的相关文章

随机推荐