Разница в дате T-SQL между несколькими строками - PullRequest
0 голосов
/ 03 декабря 2018

Я хочу Id_Pass, где разница между 2 и более датами составляет более 10 дней.Я пробовал datediff, но чувствую, что он становится слишком сложным.

+------------+-----------+-------+
|    Date    |  Id_Pass  | Value |
+------------+-----------+-------+
| 2011-03-18 | PASS00004 |    30 |
| 2011-03-19 | PASS00004 |    60 |
| 2012-02-25 | PASS00005 |    30 |
| 2012-04-25 | PASS00005 |    30 |
+------------+-----------+-------+

Желаемый результат:

+-----------+
|  Id_Pass  |
+-----------+
| PASS00005 |
+-----------+

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Просто используйте оконную функцию LAG, чтобы найти предыдущую дату для каждой строки:

SELECT Id_Pass
FROM (
    SELECT Id_Pass, Date, LAG(Date) OVER (PARTITION BY Id_Pass ORDER BY Date) AS PrevDate
    FROM yourdata
) AS cte
WHERE Date > DATEADD(DAY, 10, PrevDate)
0 голосов
/ 03 декабря 2018

Вы можете использовать функцию lag ()

select * from
(
select *, DATEDIFF(day, LAG(Date,1, Date) OVER (partition by Id_Pass ORDER BY Date)) as daydiff
)A where daydiff>10
...