Вертикальные вычисления в запросе

Юрий Горбунов
Дата: 04.03.2008 04:17:46
есть строка, в ней несколько разнотипных значений [счётчик], [дата], [значение показателя],...,[и т. д.]
Необходимо вычислить отклонение от [значения показателя] предедущей записи.
(и вообще желательно вычислять отклонение от [значения показателя] первой записи из выборки и определённой записи из выборки, например последней)
Желательно это делать без VBA, штатными средствами SQL

Другими словами: мне необходио производить вычисления не между разными значениями одной записи (строки), а вычисления между разными значениями разных сторк (вычисления по столбцу)

Напимер:
необходимо производить вычисление отклонений ежедневных значений индекса фондового рынка, например:
Дата; Значение
28.02.2008; 100 руб
29.02.2008; 120 руб
отклонение равно 20 а это 20%
Думаю что это нужно делать в запросе и значения должны иметь следующий вид:
Дата; Значение; Отклонение
28.02.2008; 100;
29.02.2008; 120; 20%
то есть, как мне кажется, ныжна функция вычисляемового поля типа:
Процент: [Таблица.Значение]/PRED([Таблица.Значение])
Подскажите пожалуста!!!
BoNiM
Дата: 04.03.2008 06:47:25
Юрий Горбунов
Необходимо вычислить отклонение от [значения показателя] предедущей записи.

1. Предыдущая запись - запись с датой предшествующей дате текущей записи?
2. Значения в поле Дата образуют непрерывный ряд или есть разрывы, например, данные за выходные отсутствуют?
3. Запрос должен быть обновляемым?
Юрий Горбунов
Дата: 26.03.2008 01:19:08
BoNiM

1. Предыдущая запись - запись с датой предшествующей дате текущей записи?
2. Значения в поле Дата образуют непрерывный ряд или есть разрывы, например, данные за выходные отсутствуют?
3. Запрос должен быть обновляемым?

1. Да с предедущей
2. Разрывы есть.
3. Да.
Shark
Дата: 26.03.2008 07:19:52
1)Надо записи пронумеровать.
2)Потом соединить таблицу саму с собой с предыдущей записью. както так:
Таблица т1 иннер джойн таблица т2 он т1.Счетчик=т2.Счетчик+1
3)Потом вычислять чего надо
4321
Дата: 26.03.2008 10:36:01
Shark
1)Надо записи пронумеровать.
2)Потом соединить таблицу саму с собой с предыдущей записью. както так:
Таблица т1 иннер джойн таблица т2 он т1.Счетчик=т2.Счетчик+1
3)Потом вычислять чего надо
да не. надо ВБА ф-ю на Static переменной(ых) состряпать. А запрос брать как "статический набор записей". - будет быстрее, и, набив руку, проще. Но одербай в запросе таки нужен. Для порядка.
Shark
Дата: 26.03.2008 10:55:57
>да не. надо ВБА ф-ю на Static переменной(ых) состряпать
Каэшн так быстрее и проще. Но закащик же просит
>Желательно это делать без VBA, штатными средствами SQL
Karfaqen
Дата: 26.03.2008 11:15:43
Если даты уникальные, попробуйте так:
SELECT T.*, 
(SELECT TOP 1 значение FROM Таблица WHERE дата<T.дата ORDER BY дата DESC) AS PRED
FROM Таблица T
BoNiM
Дата: 26.03.2008 12:28:37
Shark
Но закащик же просит
>Желательно это делать без VBA, штатными средствами SQL
Но с другой стороны
Юрий Горбунов
то есть, как мне кажется, ныжна функция вычисляемового поля типа:
Процент: [Таблица.Значение]/PRED([Таблица.Значение])


Karfaqen
Если даты уникальные, попробуйте так:
SELECT T.*, 
(SELECT TOP 1 значение FROM Таблица WHERE дата<T.дата ORDER BY дата DESC) AS PRED
FROM Таблица T
Инициатор топика просит обновляемый запрос:
Юрий Горбунов
BoNiM

1. Предыдущая запись - запись с датой предшествующей дате текущей записи?
2. Значения в поле Дата образуют непрерывный ряд или есть разрывы, например, данные за выходные отсутствуют?
3. Запрос должен быть обновляемым?

1. Да с предедущей
2. Разрывы есть.
3. Да.
Karfaqen
Дата: 26.03.2008 12:38:40
BoNiM
Инициатор топика просит обновляемый запрос
А, ну откат тогда. Осилил только исходный пост :)