【问题标题】:Sql group by month and year with rollupSql 按月和年分组,汇总
【发布时间】:2015-05-19 13:06:38
【问题描述】:

我正在使用下面的代码列出财政年度(Apr14 到 Mar15)每个月的计算输出:

select 
datename(month,arvd) Mth,
year(arvd) Yr,
count(submissionid) n,
max(HES/12) HES,
cast(count(submissionid) / max(HES/12)*100 as decimal(5,2)) DataCompleteness

from PRIcache p
left join (select distinct hsite, HES from hsite where hyear=2013) hs on
hs.hSite = p.site

where siteid=8 and arvd between '20140401' and '20150331'

group by datename(month,arvd), datepart(month,arvd), year(arvd)
order by year(arvd), datepart(month,arvd)

代码正在运行以按以下格式向我提供每月数据:

Mth Yr n HES 数据完整性


2014 年 4 月 49 48.5 101.03

我想在底部添加一个汇总总计,我通常会使用汇总来执行此操作,但因为我在多个字段上进行分组,它会在我的结果中添加重复的行。

有没有办法解决这个问题?我正在使用 SQL Server MS 2012

谢谢

【问题讨论】:

标签: sql group-by sql-server-2012


【解决方案1】:

GROUPING SETS 分组,分组为空:

...
Group by Grouping Sets((datename(month,arvd), datepart(month,arvd), year(arvd)), ())
order by year(arvd), datepart(month,arvd)

【讨论】:

    【解决方案2】:

    感谢关于分组集的建议,我已将它们与子查询结合以获得我需要的输出:

    Select  isnull(Mth,'Total') Mth,
        isnull(Yr,'9999') Yr,
        sum(n) ActualSubmissions,
        sum(HES) ExpectedSubmissions,
        cast(avg(DataCompleteness) as decimal(5,2)) DataCompleteness
    
    from 
    
        (select     datename(month,arvd) Mth,
                    Month(arvd) MthSort,
                    Year(arvd) Yr,
                    count(submissionid) n,
                    HES/12 HES,
                    cast(count(submissionID)/(HES/12) as decimal(5,2))   DataCompleteness
         from PRIcache p
            left join hSite on p.site=hSite and hyear=2013
         where siteid=8888 and arvd between '20140401' and '20150330'
         group by datename(month,arvd), Month(arvd), year(arvd), HES) #datacomp 
    
    
    group by Grouping sets ((Mth,Yr,MthSort),())
    
    order by Yr, MthSort
    

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多