Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Patucho Member Откуда: Киев Сообщений: 36 |
Есть таблица истории действий с столбцами: ИД действия, ИД клиента, Дата действия, Результат. Как выбрать только те строки, где дата между первым и СЛЕДУЮЩИМ действием > 3 дней (72 часа) в не зависимости от результата? В таблицу записываются отправка смс. Выборка необходима для отслеживания платежей после рассылки. Берем зазор в 72 часа. Но если по клиенту отправляли смс с периодичностью в 1 день (например попросил реквизиты отправить) то получу дубли по платежам. |
7 июн 19, 11:15 [21904321] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Patucho, DATEDIFF(hh,LAG([Дата действия]) OVER (PARTITION BY ORDER BY [Дата действия]),[Дата действия]) хотя может я не понимаю что такое между первым и СЛЕДУЮЩИМ |
7 июн 19, 11:25 [21904331] Ответить | Цитировать Сообщить модератору |
Patucho Member Откуда: Киев Сообщений: 36 |
SELECT TOP 20 l.LID 'ID Клиента' ,l.Created ,l.State 'Result' ,l.PhoneNumber ,ROW_NUMBER() OVER (PARTITION BY PhoneNumber ORDER BY l.Created) 'Row' FROM #l l
|
||||||||||||
7 июн 19, 11:36 [21904348] Ответить | Цитировать Сообщить модератору |
Patucho Member Откуда: Киев Сообщений: 36 |
Необходимо чтобы между Row 1 и 2 (2 и 3, 3 и 4, больше 4-х не может быть) разница в датах была > 72 часов |
7 июн 19, 11:38 [21904349] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Patucho, а я как сказал? |
7 июн 19, 11:39 [21904351] Ответить | Цитировать Сообщить модератору |
Patucho Member Откуда: Киев Сообщений: 36 |
TaPaK, Не сразу понял) Решение подходит, спасибо тебе, человечище! |
7 июн 19, 11:47 [21904360] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |