Возможно ли объединить записи, которые разделены на конец месяца? - PullRequest
0 голосов
/ 03 июля 2019

У меня есть таблица с именами и датами.

Что выглядит так:

https://i.stack.imgur.com/xuWSD.png

И мне нужно, чтобы это выглядело так:

https://i.stack.imgur.com/CXXYL.png

Возможно ли это? Я не знаю, как это сделать.

1 Ответ

0 голосов
/ 03 июля 2019

Попробуйте использовать комбинацию разности лагов и промежуточной суммы

WITH CTE1
AS
(
SELECT CASE WHEN DATEDIFF(DAY,LAG(TODATE) OVER (ORDER BY TODATE),FROMDATE) =1  THEN NULL ELSE ROW_NUMBER() OVER (ORDER BY FROMDATE) END AS COL1  --in case the last ToDate and current FromDate  are consecutive, use a NULL mark
,* 
FROM Table
)
,CTE2 AS
(
SELECT SUM(ISNULL(COL1,0)) OVER (ORDER BY FROMDATE) AS RUNNINGSUM  ----sum up consecutive rows adding 0 in case of a NULL value 
,* FROM CTE1
)
SELECT NAME,MIN(FROMDATE) AS FROMDATE,MAX(TODATE) AS TODATE FROM CTE2
GROUP BY RUNNINGSUM,NAME
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...