Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 формирование построчно интервалов времени  [new]
Michail A.
Member

Откуда:
Сообщений: 96
Добрый день!

Есть такая задача.

Имеем выгрузку данных по талонам электронной очереди в виде таблицы tickets

report_date (отчетная дата), event_time (время отрыва талона), ticket_id (id_талона)

report_date event_time ticket_id
20.01.2018 09:30:31 И001
20.01.2018 09:30:38 И002
20.01.2018 09:31:01 И003
20.01.2018 09:32:01 И004


Необходимо написать запрос, который выдаст построчно интервалы времени между отрывами талонов клиентами:

report_date previous next
20.01.2018 09:30:31 09:30:38
20.01.2018 09:30:38 09:31:01
20.01.2018 09:31:01 09:32:01



Корректно ли использовать запрос в таком виде или можно как-то решить через оконные функции?

/****** Скрипт для команды SelectTopNRows из среды SSMS  ******/

Select t.report_date,t.event_time,t1.event_time

from

(
  SELECT
	[report_date]
      ,	[event_time]

  FROM tickets

) t
  cross apply

  (
	  select top 1 event_time 
	  FROM tickets
	  Where t.report_date = report_date
	  and event_time > t.event_time
  )

  t1

  order by t.report_date, t.event_time
12 ноя 18, 22:31    [21732375]     Ответить | Цитировать Сообщить модератору
 Re: формирование построчно интервалов времени  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
Michail A.,

Наверняка можно так.
Делаете два сте: первый с rank по event_time и второй с rank по event_time где отнимаете от rank единичку, потом джойните эти два сте по rank-у.

Или же один подзапрос, но джойн по rank со смещением на единицу.

Получаете
1,2
2,3
3,4
Итд
13 ноя 18, 00:01    [21732413]     Ответить | Цитировать Сообщить модератору
 Re: формирование построчно интервалов времени  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 308
А чем просто Lead или LAG не устраивают?
Запрос будет в 10 раз меньше
13 ноя 18, 00:17    [21732420]     Ответить | Цитировать Сообщить модератору
 Re: формирование построчно интервалов времени  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
Glebanski
А чем просто Lead или LAG не устраивают?
Запрос будет в 10 раз меньше


Lag lead вообще в одну строку :)
13 ноя 18, 00:21    [21732422]     Ответить | Цитировать Сообщить модератору
 Re: формирование построчно интервалов времени  [new]
Michail A.
Member

Откуда:
Сообщений: 96
А можно текст запроса, как он примерно будет выглядеть с lag/lead?
13 ноя 18, 07:09    [21732514]     Ответить | Цитировать Сообщить модератору
 Re: формирование построчно интервалов времени  [new]
PizzaPizza
Member

Откуда:
Сообщений: 370
Michail A.,

Что то вроде
lead(event_time) over (order by event_time)

Конечно же вам надо удостовериться, что event_time будет у вас сортироваться так как вам нужно. Если у вас event_time не в правильном формате, то сортировка будет неправильной.
13 ноя 18, 07:27    [21732519]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить