Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / формирование построчно интервалов времени / 6 сообщений из 6, страница 1 из 1
12.11.2018, 22:31
    #39732067
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
Добрый день!

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

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

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

report_date event_time ticket_id20.01.2018 09:30:31 И00120.01.2018 09:30:38 И00220.01.2018 09:31:01 И00320.01.2018 09:32:01 И004

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

report_date previous next20.01.2018 09:30:31 09:30:38 20.01.2018 09:30:38 09:31:0120.01.2018 09:31:01 09:32:01


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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
/****** Скрипт для команды 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
...
Рейтинг: 0 / 0
13.11.2018, 00:01
    #39732082
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
Michail A.,

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

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

Получаете
1,2
2,3
3,4
Итд
...
Рейтинг: 0 / 0
13.11.2018, 00:17
    #39732086
Glebanski
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
А чем просто Lead или LAG не устраивают?
Запрос будет в 10 раз меньше
...
Рейтинг: 0 / 0
13.11.2018, 00:21
    #39732087
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
GlebanskiА чем просто Lead или LAG не устраивают?
Запрос будет в 10 раз меньше

Lag lead вообще в одну строку :)
...
Рейтинг: 0 / 0
13.11.2018, 07:09
    #39732124
Michail A.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
А можно текст запроса, как он примерно будет выглядеть с lag/lead?
...
Рейтинг: 0 / 0
13.11.2018, 07:27
    #39732129
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
формирование построчно интервалов времени
Michail A.,

Что то вроде
Код: sql
1.
lead(event_time) over (order by event_time)


Конечно же вам надо удостовериться, что event_time будет у вас сортироваться так как вам нужно. Если у вас event_time не в правильном формате, то сортировка будет неправильной.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / формирование построчно интервалов времени / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]