вычисление разницы между текущим и предыдущим полем

romy4

invoke [brain]
вычисление разницы между текущим и предыдущим полем

допустим, есть такая таблица:
A
15,50
16,32
15,95

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

A diff
15,50 +0
16,32 +0,82
15,95 - 0,37

-~{}~ 06.06.07 17:42:

есть идея пихать
select ... into somevar.... ,field_a - @somevar ...
но он не выведет в таком случае результата

-~{}~ 06.06.07 17:52:

фигня, с переменной не выходит
 

ZigFreeD

Новичок
ну если ты знаешь кол-во полей то можешь просто использовать функции самого мускула... как калькулятора :)
если знаешь мускул умеет так:
SELECT (2*2), (4+1)*5, (9/3), (5-3)

чтото вроде этого можешь использовать у себя :)
введя в поля вычислять разницу... но эо придется ручками вбивать...
примерно так (на примере одного... где A - имя таблицы, a1 - первое поле, a2-второе поле):
SELECT A.a2, (A.a2-A.a1) FROM A;

-~{}~ 06.06.07 19:03:

Другого способа не знаю :(
 

alpine

Новичок
romy4
Ну типа так можно
[sql]
SET @a=(select `data` from t limit 1);
select `data`, diff from (select `data`, ROUND((`data`-@a), 2) as diff, @a:=`data` from t) as tmp;
[/sql]
 
Сверху