【发布时间】:2016-09-23 04:26:48
【问题描述】:
我创建了一个如下所示的表:
ID TSPPLY_DT NEXT_DT DAYS_BTWN TIME_TO_EVENT CENSORED ENDPOINT
-----------------------------------------------------------------------------
1 2014-01-01 2014-01-10 10 10 0 0
1 2014-01-10 2014-01-21 11 21 0 0
1 2014-01-21 NULL NULL 21 1 0
2 2015-04-01 2015-04-30 30 30 0 0
2 2015-04-30 2015-05-03 1 31 0 1
2 2015-05-03 2015-05-06 3 34(should be 3)0 0
2 2015-05-06 2015-05-16 10 44(shouldbe 13)1 0
但是,TIME_TO_EVENT 列与我的代码没有正确相加 - 我们的想法是在 ID 更改、CENSORED = 1 或 ENDPOINT = 1 之间的天数相加。
我认为我需要一个加法列,我可以根据ID 和GROUPING 的聚合求和...输出如下:
ID TSPPLY_DT NEXT_DT DAYS_BTWN TIME_TO_EVENT CENSORED ENDPOINT GROUPING
----------------------------------------------------------------------------------------
1 2014-01-01 2014-01-10 10 10 0 0 A
1 2014-01-10 2014-01-21 11 21 0 0 A
1 2014-01-21 NULL NULL 21 1 0 A
2 2015-04-01 2015-04-30 30 30 0 0 A
2 2015-04-30 2015-05-03 1 31 0 1 A
2 2015-05-03 2015-05-06 3 3 0 0 B
2 2015-05-06 2015-05-16 10 13 1 0 B
那么关于如何创建GROUPING 列的任何想法?就像如果下一行ID 与当前行相同,请检查CENSORED 和ENDPOINT。如果其中一个 = 1,则对于下一行,将分组更改为新值。到达新的ID 后,将grouping 重置为 A(或任何任意值)并再次运行测试。
【问题讨论】:
标签: sql sql-server-2012-express