Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.22;
Скачать: CL | DM;

Вниз

Подскажите можно ли на SQL таблицу   Найти похожие ветки 

 
alucard ©   (2006-10-03 12:26) [0]

Доброго дня.

Подскажите как на SQL создать таблицу которая будет содержать разницу текущей и предыдущей записи одного поля.

Спасибо.


 
ANB ©   (2006-10-03 12:28) [1]

никак. но можно написать запрос, который вернет набор данных с этим результатом.


 
alucard ©   (2006-10-03 12:31) [2]


> ANB ©   (03.10.06 12:28) [1]

Это хорошо.

Как он примерно будет выглядеть?

Я не знаю как на SQL это реализовать.


 
dr Gonzo ©   (2006-10-03 12:32) [3]

На Paradox .... хм похоже, что на уровне БД никак. Тут только тригер поможет, который будет на Insert, Delete и Update по изменениям обновлять эту разностную таблицу.


 
alucard ©   (2006-10-03 12:34) [4]


> dr Gonzo ©   (03.10.06 12:32) [3]

Да вот человек говорит что можно.
> ANB ©   (03.10.06 12:28) [1]


 
Sergey13 ©   (2006-10-03 13:04) [5]

> [4] alucard ©   (03.10.06 12:34)

Судя по топику
http://delphimaster.net/view/3-1159512584/
ты и тут напроектировал не слишком удачно. Почему бы не хранить наоборот - дельту изменения, а текущее значение получать сложением. Или хранить и то и другое для ускорения выборок (с точки зрения теории это не правильно, тем более для Парадокса, но иногда здорово выручает).


 
alucard ©   (2006-10-03 13:09) [6]


> Sergey13 ©   (03.10.06 13:04) [5]

В базе и так записей не мало.

Если никак, тода это выход :)


> ANB ©   (03.10.06 12:28) [1]

За свои слова надо отвечать.


 
Sergey13 ©   (2006-10-03 13:17) [7]

> [6] alucard ©   (03.10.06 13:09)
> В базе и так записей не мало.
Ну и что? Потри лишнее.

> За свои слова надо отвечать
Что бы человек отвечал за свои слова, человеку надо платить за его слова.
1. Ты ему заплатил?
2. С чего ты взял, что он не прав?


 
dr Gonzo ©   (2006-10-03 13:38) [8]

Самый простой выход "В лоб", сразу скажу, что он НЕ ОПТИМАЛЕН. Использовать тупой цикл по всем записям и строить эту таблицу каждый раз. Реализовать можно как на Delphi так и на SQL с пом-ю курсоров.

Более нормальный подход связанный список => легкий Join удобство выборки. Например так:

declare @T  table (prevID int , pID int , nexID int, Value int )

SELECT A.pID, A.Value - B.Value AS Delta FROM @T  AS A
 LEFT JOIN @T AS B ON A.prevId = B.pId


 
ANB ©   (2006-10-03 15:48) [9]


> За свои слова надо отвечать.

А я не обещал, что буду за тебя запрос писать. :) Я сказал, что написать его можно. Могу даже на халяву оракловый вариант запостить.


 
dr Gonzo ©   (2006-10-03 16:42) [10]

2 ANB © Давай, посмотрим реализацию, будет интересно.


 
Stanislav ©   (2006-10-03 16:58) [11]

Незнаю за парадокс, но на MSSQL должна работать.
alucard ©   (03.10.06 12:26)  , так что ANB прав.

select table1.a-(select top 1 a from table where id<table1.id order by id) from table as table1


 
k2 ©   (2006-10-03 16:58) [12]

select col1, col2, col2 - lag(col2)over(partition by null order by col1) col3 from  
(select 1 col1, 20 col2 from dual
union all
select 2, 22 from dual
union all
select 3, 45 from dual
union all
select 4, 16 from dual)

1 20
2 22 2
3 45 23
4 16 -29


 
k2 ©   (2006-10-03 17:01) [13]

лучше так select col1, col2, col2 - lag(col2)over(order by col1) col3 ... :)


 
Mike Kouzmine ©   (2006-10-03 17:55) [14]

в парадоксе после пост амба. никак не получешь. ни sql ни чем.


 
alucard ©   (2006-10-04 10:37) [15]

Спасибо.

а на парадоксе заработает?



Страницы: 1 вся ветка

Текущий архив: 2006.10.22;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.067 c
2-1159512427
aht
2006-09-29 10:47
2006.10.22
Удаление строки в StringGrid


15-1159451520
Oldman
2006-09-28 17:52
2006.10.22
Мудры были предки... (Трудно быть богом ©)


2-1159561003
minza_a
2006-09-30 00:16
2006.10.22
Ошибка : Undeclared identifier: vararrayof


3-1156542184
spogi
2006-08-26 01:43
2006.10.22
до 1 млн. в записях...


15-1159383721
Rouse_
2006-09-27 23:02
2006.10.22
Пашка с Днем рождения вас :)))