分组数据和维护计算字段

时间:2018-05-05 04:15:34

标签: sql sql-server reporting-services

我有几个字段,如部门,工作位置,员工和工作日期 需要根据给定日期参数

获取输出
Department  WorkLocation  EmployeeID   WorkDate
----------  ------------  ----------   --------
D1           L2            121          05/01/2018
D1           L1            141          05/01/2018
D2           L1            151          05/02/2018
and so on

我已经尝试过使用临时表存储数据并从那里获取但是没有工作

部门,在给定日期工作的员工人数,从给定日期起最近7天内工作的员工人数,从月度开始到给定日期工作的员工人数 即

Department   WorkLocation     Count_On_Date   Count_Last7Days   Count_MonthToDate
----------    -----------     ------------    ---------------   -----------------
D1           L1              xxx                  xxx             xxx
D2           L1              xxx                  xxx             xxx
D1           L2              xxx                  xxx             xxx
D2           L2              xxx                  xxx             xxx  

请帮助

由于

2 个答案:

答案 0 :(得分:1)

使用GROUP BY子句并使用case表达式执行条件聚合

select Department, WorkLocation,
       sum(case when WorkDate = @givendate then 1 else 0 end) as Count_On_Date,
       sum(case when WorkDate >= dateadd(day, -8, @givendate) and 
                     WorkDate < @givendate
                then 1 else 0 end) as Count_Last7Days,
       sum(case when month(WorkDate) = month(@givendate) 
                then 1 else 0 end) as Count_MonthToDate
from table t
group by Department, WorkLocation;

答案 1 :(得分:1)

我测试过,效果与预期一致。您需要使用具有不同条件的内联计数。为了生成每一行,我们使用单tipo_mundo = models.ManyToManyField(Tipo_mundo, related_name='mundos') 条款来取消不需要的值。

case