【发布时间】:2020-04-01 00:09:01
【问题描述】:
我需要得到一个名为 prodflag 的列的总和,它只有 1 和 0。但棘手的部分是我需要在 4 周的桶中得到总和,所以像这样:
- 第一个桶:第 14、13、12、11 周
- 第二个桶:第 10,9,8,7 周
- 第三桶:第 6,5,4,3 周
select
person
, sup
, program
, city
, sum( case when weekraw between DATEPART(WEEK,DATEADD(WEEK, -3, GETDATE())) and DATEPART(WEEK, GETDATE()) then prodflag else 0 end) firstbucket
, sum( case when weekraw between DATEPART(WEEK,DATEADD(WEEK, -6, GETDATE())) and DATEPART(WEEK,-3, GETDATE()) then prodflag else 0 end) secondbucket
, sum( case when weekraw between DATEPART(WEEK,DATEADD(WEEK, -9, GETDATE())) and DATEPART(WEEK,-6, GETDATE()) then prodflag else 0 end) thirdbucket
from final
group by
person
, sup
, program
, city
但是我认为与大小写相结合的总和不起作用,因为当我尝试让这部分代码工作时,它给了我一个错误:
, sum(
case when weekraw between DATEPART(WEEK,DATEADD(WEEK, -6, GETDATE())) and DATEPART(WEEK,-3, GETDATE()) then prodflag else 0 end) secondbucket
我错过了一些东西,或者在这种情况下最好的方法是什么?
【问题讨论】:
-
抱歉标签错了,我会删除它
-
错误是什么?您的数据是什么样的?
标签: sql sql-server database sum case