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

Откуда:
Сообщений: 52
Здравствуйте!
Есть результат запроса, который возврашает

DECLARE @t1 TABLE (id INT, OnDate DATETIME)

INSERT INTO @t1 ( id, OnDate )
SELECT 1, '20110620'
UNION
SELECT 2, '20110621'
UNION
SELECT 4, '20110622'
UNION
SELECT 10, '20110623'
UNION
SELECT 5, '20110624'
UNION
SELECT 6, '20110625'
UNION
SELECT 7, '20110626'
UNION
SELECT 9, '20110627'
UNION
SELECT 8, '20110628'
UNION
SELECT 11, '20110629'

SELECT * FROM @t1
ORDER BY OnDate

1 2011-06-20 00:00:00.000
2 2011-06-21 00:00:00.000
4 2011-06-22 00:00:00.000
10 2011-06-23 00:00:00.000
5 2011-06-24 00:00:00.000
6 2011-06-25 00:00:00.000
7 2011-06-26 00:00:00.000
9 2011-06-27 00:00:00.000
8 2011-06-28 00:00:00.000
11 2011-06-29 00:00:00.000


нужно разбить даты на промежутки между ними (промежутки могут быть от одного дня до года)
например так:
20110620 20110621
20110621 20110622
20110622 20110623
20110623 20110624
20110624 20110625
20110625 20110626
20110626 20110627
20110627 20110628
20110628 NULL

Подскажите как это можно сделать. Может у кого то есть примерчик?
28 июн 11, 11:37    [10885551]     Ответить | Цитировать Сообщить модератору
 Re: Разбить записи на четные и не четные  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
ITW, если версия сервера позволяет

;WITH cte (id, dt, rn) AS (
	SELECT *, ROW_NUMBER() OVER (ORDER BY OnDate)
	FROM @t1
)
SELECT c1.dt, c2.dt 
FROM cte c1
LEFT JOIN cte c2 ON c2.rn = c1.rn + 1
WHERE c1.rn % 2 = 0
28 июн 11, 11:49    [10885634]     Ответить | Цитировать Сообщить модератору
 Re: Разбить записи на четные и не четные  [new]
TheGraf
Member

Откуда:
Сообщений: 1
ITW,

SELECT onDate, (SELECT MIN(T2.onDate) FROM @t1 AS T2 WHERE T2.OnDate > T1.OnDate)
  FROM @t1 AS T1
  ORDER BY OnDate
28 июн 11, 11:49    [10885635]     Ответить | Цитировать Сообщить модератору
 Re: Разбить записи на четные и не четные  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
ITW, не так понял, where надо убрать
28 июн 11, 11:51    [10885654]     Ответить | Цитировать Сообщить модератору
 Re: Разбить записи на четные и не четные  [new]
ITW
Member

Откуда:
Сообщений: 52
Shakill,

Большое спасибо
28 июн 11, 11:57    [10885682]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить