4
我有一个包含2个日期列的表,分别表示创建和关闭JIRA项目。对于报告,我需要获取每个日期和累积的已创建和已关闭项目的数量。无效值的外部连接表的累积总和
但是在某些日期没有项目创建或关闭,因此完整的外部联接返回空值。这会导致Im无法修正的累积和列中的空值。
我已经尝试了很多不同的东西与coalesce'ing:
Select
coalesce(A.createdate, B.closedate) datum
,COALESCE(A.created, 0) created
,COALESCE(B.closed,0) closed
,sum(created) OVER(ORDER BY A.createdate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cumSum
,sum(coalesce(created,0)) OVER(ORDER BY A.createdate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cumSum2
,COALESCE(sum(created) OVER(ORDER BY A.createdate ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),0) cumSum3
,sum(coalesce(created,0)) OVER(ORDER BY A.createdate ROWS BETWEEN UNBOUNDED PRECEDING AND 1 preceding) + coalesce(created,0) cumSum4
from
(SELECT convert(date,[Created]) createdate, COUNT(*) created
FROM [jira].[dbo].[report_clean_full]
group by convert(date,[Created])) A
full outer join (SELECT convert(date,Resolved) closedate, COUNT(*) closed
FROM [jira].[dbo].[report_clean_full]
where status = 'Closed'
group by convert(date,Resolved)) B
on A.createdate = B.closedate
order by 1
结果
2012-08-17 1 0 1 1 1 1
2012-08-23 1 0 2 2 2 2
2012-08-30 4 0 6 6 6 6
2012-09-03 1 0 7 7 7 7
2012-09-06 25 0 32 32 32 32
2012-09-07 30 3 62 62 62 62
2012-09-10 11 6 73 73 73 73
2012-09-11 6 1 79 79 79 79
2012-09-13 1 0 80 80 80 80
2012-09-14 10 1 90 90 90 90
2012-09-17 7 1 97 97 97 97
2012-09-18 4 2 101 101 101 101
2012-09-19 4 2 105 105 105 105
2012-09-20 19 5 124 124 124 124
2012-09-21 12 0 136 136 136 136
2012-09-24 7 1 143 143 143 143
2012-09-26 0 7 NULL 0 0 0
2012-09-27 18 2 161 161 161 161
2012-09-28 7 0 168 168 168 168
2012-10-01 4 1 172 172 172 172
于2012-09-26
有唯一项目关闭了,但我想cumSum到显示143而不是0(并最终重复关闭项目和减去获得未清项目的编号)
任何人都可以解释什么我做错了吗?
sql server 2012,但是当我发布的那一刻,突然间有一段清晰的时刻。 OVER()中的ORDER BY是问题所在,我现在使用coalesce(A.createdate,b.closedate),它起作用 – JJS 2013-04-24 08:43:08