eliasum
@eliasum
cd ..

Как сформировать новую таблицу одним запросом?

Таблица из одного столбца:
2017-02-01 15:00:43
2017-03-18 10:30:10
2017-12-11 01:21:55
2017-12-11 15:33:03
2017-03-18 10:30:10
2017-02-22 08:40:42
2017-06-06 23:59:40

Мне нужно написать один запрос без процедурных компонентов, без хп, временных таблиц и оконных функций, который сделает из нее таблицу из двух столбцов таким образом, чтобы каждая дата была закрыта следующей датой:
2017-02-01 15:00:43 2017-02-22 08:40:42
2017-02-22 08:40:42 2017-03-18 10:30:10
2017-03-18 10:30:10 2017-03-18 10:30:10
2017-03-18 10:30:10 2017-06-06 23:59:40
2017-06-06 23:59:40 2017-12-11 01:21:55
2017-12-11 01:21:55 2017-12-11 15:33:03
2017-12-11 15:33:03 null
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
tsklab
@tsklab Куратор тега Transact-SQL
Здесь отвечаю на вопросы.
DECLARE @T TABLE ( M DATETIME2(0))
INSERT @T VALUES ('2017-02-01 15:00:43'), 
('2017-03-18 10:30:10'),
('2017-12-11 01:21:55'),
('2017-12-11 15:33:03'),
('2017-03-18 10:30:10'),
('2017-02-22 08:40:42'),
('2017-06-06 23:59:40')

SELECT DISTINCT MB.M AS [Start],
  ( SELECT TOP 1 M FROM @T AS ME WHERE (ME.M > MB.M) ORDER BY ME.M ) AS [End]
  FROM @T AS MB
UNION
SELECT M, M
  FROM @T
  GROUP BY M
  HAVING COUNT(M) > 1
ORDER BY 1, 2
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы