2016-09-23 7 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変更、= 1 CENSOREDまたは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は現在の行と同じです、CENSOREDENDPOINTをチェックしてください。次の行で= 1の場合は、グループ化を新しい値に変更します。新しいIDに達すると、groupingをA(または任意の値)にリセットし、テストを再度実行します。

答えて

0

あなたはこのように、DATEDIFF機能を使用する必要があります。

DATEDIFF(d, TSPPLY_DT, NEXT_DT) AS DAYS_BTWN 

今、あなたはGROUP BYは必要ありません。

+0

ありがとうございますが、私の列DAYS_BTWNが正しく機能しています。問題は特にTIME_TO_EVENT列にあります。最初のデータ例が表示されている場合は、誤って追加されている行についてコメントしました。 – Brrrr

関連する問題