【发布时间】:2017-04-13 02:40:41
【问题描述】:
我需要将列中从开始到当前日期的各种项目的出现次数相加,但不能超过(有未来数据) 我的表看起来像这样,我希望将最后一列作为每种类型的总和列(Applicaiton In
|Task Name|Finish Date| Type|Planned|
|Equate |1/2/17 | App |1
|TSquare |2/7/17 | App |2
|Smart |3/1/17 | Data |1
当我不使用“直到本周”过滤器时,一切都很棒
Select sum (case when
Tt.[TaskPercentCompleted] < 100 and Tt.[Task_Significance] like 'Application'
Or Tt.[TaskPercentCompleted] < 100 and Tt.[Task_Significance] like 'Data'
then 1 else 0 end) as [Planned]
From [Some table]
我得到了这个输出——但直到这周才把它们都计算在内。 (然后下周 - 那周等) 但是,当我将它添加到同一个语句中时(所以我得到了一个日期过滤器)
Select sum(case when
[Task_Significance] like 'Application'
Or
[Task_Significance] like 'data'
then 1 else 0 end) over (order by [taskfinishdate] rows unbounded preceding) as Planned
From [Some table]
where
[taskfinishdate] <= DATEADD(DAY, 8-DATEPART(DW, GETDATE()), Convert(date,getdate()))
所以我再次需要按 type 求和直到当前日期,而不仅仅是所有这些的总和。
【问题讨论】:
-
只要使用
where taskfinishdate < cast(getdate() as date) -
你需要
sum按类型然后使用group by type
标签: sql-server