5
Raxla
06.11.10
✎
15:06
|
select * from Tab t1 cross apply ( select top 1 from Tab t2 where t2.Time > t1.Time and abs(t2.Val-t1.Val) > @diff order by t2.Time asc ) t2 Пытаюсь сделать такую вещь: таблица: время, значение надо найти минимальный интервал, на котором значения будут разниться больше чем некоторая величина. Для каждой строки, можно ен по всем данным, а по нескольким вперёд (30 скажем) Мне вот такой запрос подсказали, но никгода раньше с cross у меня дел не было. Вот что пишут про него: CROSS APPLY формирует уникальную пару каждого элемента коллекции слева с элементом коллекции, полученным путем вычисления выражения справа.При использовании оператора CROSS APPLY, выражение справа функционально зависимо от элемента слева, как показано в следующем примере связанной коллекции: SELECT c, f FROM C AS c CROSS APPLY c.Assoc AS f Поведение CROSS APPLY аналогично поведению списка соединения.Если выражение справа принимает значение пустой коллекции, оператор CROSS APPLY не формирует пар для этого экземпляра элемента слева.
|
|