我有几个字段,如部门,工作位置,员工和工作日期 需要根据给定日期参数
获取输出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
请帮助
由于
答案 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