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

Откуда: Київ
Сообщений: 10428
Есть таблица

declare @t (id uniqueidentifier, dt datetime, name nvarchar(256))

По идее id должны монотонно возрастать в соответствии с датой.

Каким запросом можно отловить, если есть нарушения монотонности?
т.е. если дата возрастает, а ид "прыгнул" ниже предыдущего.

В принципе такое может быть, что дата растет а иды растут кусочно
14 ноя 13, 13:19    [15127655]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 219
Winnipuh, uniqueidentifier это ж GUID! О какой монотонности речь?
14 ноя 13, 13:24    [15127712]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
ROLpogo
uniqueidentifier это ж GUID! О какой монотонности речь?

Очевидно, речь о NEWSEQUENTIALID().
14 ноя 13, 13:26    [15127726]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
step_ks
Member

Откуда:
Сообщений: 936
ROLpogo, может, у него newsequentialid.
Winnipuh, найти запись, у которой id больше, а дата меньше, чем у текущей. Что не получается-то?
14 ноя 13, 13:28    [15127749]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Гость333
Member

Откуда:
Сообщений: 3683
select *
from @t
where id > lead(id) over(order by dt)
14 ноя 13, 13:32    [15127801]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
ROLpogo
uniqueidentifier это ж GUID! О какой монотонности речь?

Очевидно, речь о NEWSEQUENTIALID().


йез, я кстати тестирую их вместо NEWID(), результат впечатляет.

Вот решил проверить будут ли прыжки при постоянно работающем сервере и после рестарта
14 ноя 13, 13:41    [15127893]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
select *
from @t
where id > lead(id) over(order by dt)


хмм... 2012:

Windowed functions can only appear in the SELECT or ORDER BY clauses.
14 ноя 13, 13:45    [15127928]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Гость333
Member

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

А, ну да. Сорри. Тогда так:
select *
from
(
  select *, lead(id) over(order by dt) as lead_id
  from @t
) t
where id > lead_id
14 ноя 13, 13:46    [15127944]     Ответить | Цитировать Сообщить модератору
 Re: Запросс сортировкой  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Гость333
Winnipuh,

А, ну да. Сорри. Тогда так:
select *
from
(
  select *, lead(id) over(order by dt) as lead_id
  from @t
) t
where id > lead_id


да, спасибо! дает точки, после которых нарушается монотонность

declare @t TABLE (id uniqueidentifier, dt datetime not null DEFAULT GETDATE(), name nvarchar(256))

INSERT INTO @t(id, dt)
SELECT '00000000-444C-E311-9420-00259078DB31', '2013-11-14 13:50:42.957' UNION
SELECT '11111111-444C-E311-9420-00259078DB31', '2013-11-14 13:51:42.957' UNION
SELECT '22222222-4A4C-E311-9420-00259078DB31', '2013-11-14 13:52:42.957' UNION
SELECT '99999999-4A4C-E311-9420-00259078DB31', '2013-11-14 13:53:42.957' UNION
SELECT '44444444-4A4C-E311-9420-00259078DB31', '2013-11-14 13:54:42.957' UNION
SELECT '55555555-4A4C-E311-9420-00259078DB31', '2013-11-14 13:55:42.957' UNION
SELECT '66666666-4A4C-E311-9420-00259078DB31', '2013-11-14 13:56:42.957' UNION
SELECT '11111111-4A4C-E311-9420-00259078DB31', '2013-11-14 13:57:42.957' UNION
SELECT '88888888-4A4C-E311-9420-00259078DB31', '2013-11-14 13:58:42.957' 

SELECT * FROM @t ORDER BY id


select *
FROM
(
  select *, lead(id) over(order by dt) as lead_id
  from @t
) t
where id > lead_id
14 ноя 13, 14:02    [15128172]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить