2016-09-23 35 views
0

我創建了一個表,看起來像這樣在SQL Server中的分組列:建設2012

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

我想我需要的是一個除了列在那裏我可以總結的基礎上IDGROUPING聚集......隨着輸出如下:

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列的任何想法?它會像IF下一行ID是一樣的當前行,檢查CENSORED AND ENDPOINT。如果任一= 1,則對於下一行,將分組更改爲新值。一旦達到新的ID,將grouping重置爲A(或任何任意值)並再次運行測試。

回答

0

您需要使用DATEDIFF功能,像這樣:

DATEDIFF(d, TSPPLY_DT, NEXT_DT) AS DAYS_BTWN 

現在你不需要GROUP BY

+0

謝謝,但我的專欄DAYS_BTWN運行正常。該問題特別在TIME_TO_EVENT列中 - 如果您看到第一個數據示例,我已經評論了不正確添加的行。 – Brrrr