2016-09-23 5 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.

Я думаю, что мне нужно, это столбец дополнение, где я могу суммировать на основе совокупности 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? Это будет что-то вроде 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