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

Откуда: Оттуда
Сообщений: 113
есть таблица, в которой значения одной колонки есть текущие показания снятые с внешнего прибора (образно у спидометра счетчик километров)

на стадии занесения данных в таблицу узнать следующее значение невозможно

на экран нужно в строке вывести вместо текущего показания разницу между значением текущим значением и значением следующей строки (образно пробег за день)

Спасибо
22 мар 06, 09:27    [2474616]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LaN21
Member

Откуда: мск
Сообщений: 270
Делай разницу предидущей и текущей.
22 мар 06, 09:32    [2474627]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
Это я понял. Вопрос - как?
22 мар 06, 09:35    [2474636]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LaN21
Member

Откуда: мск
Сообщений: 270
а коды есть уникальные? Вот и делай по ним или тебе запрос надо?
22 мар 06, 09:36    [2474646]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
Да мне надо запрос.
Коды уникальные есть
Но они не идут по порядку
(особенность считывания с прибора)
22 мар 06, 09:39    [2474657]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
saint
Member

Откуда: Архангельск
Сообщений: 2262
тогда скажите как можно определить что некоторая запись является следующей по отношению к текущей? дата занесения есть?
22 мар 06, 09:45    [2474684]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LaN21
Member

Откуда: мск
Сообщений: 270
ну блин я так не знаю, надо чтобы хоть в каком нибудь поле писалось что нибудь что по порядку бы выстраивало значения. дата и время к примеру когда было значение записано в таблицу.
22 мар 06, 09:47    [2474697]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
vooo
Member

Откуда:
Сообщений: 1316
create table #t (val int);
insert into #t values (10)
insert into #t values (15)
insert into #t values (55)
insert into #t values (58)
go
select min(val) val, 0 difference
from   #t
union
select t2.val, t2.val - t1.val difference
from   #t t1, #t t2
where t1.val < t2.val
and t2.val = (select min(val)
                from   #t t3
                where  t3.val > t1.val)
order by val
go
val         difference  
----------- ----------- 
10          0           
15          5           
55          40          
58          3           
22 мар 06, 09:48    [2474701]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
Дата по порядку :)
я код запроса сочинить не могу :)
22 мар 06, 09:48    [2474702]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
LaN21
Member

Откуда: мск
Сообщений: 270
это для Vooo. Посмотри пожалуйста тему ЗАПРОС. Там я вопрос задал. Ты в запросах шаришь, мож чего подскажешь.
22 мар 06, 09:51    [2474725]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
vooo
Member

Откуда:
Сообщений: 1316
это для Vooo. Посмотри пожалуйста тему ЗАПРОС. Там я вопрос задал. Ты в запросах шаришь, мож чего подскажешь.

сорри за оффтоп
saint уже ответил в теме ЗАПРОС
22 мар 06, 09:55    [2474747]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
пользователь выбирает промежуток времени
например 01.01.2006 - 31.01.2006

визуальный результат нужен:
1й строки = значение от 02.01.2006 минус значение от 01.01.2006
2-й строки = значение от 03.01.2006 минус значение от 02.01.2006
...
31-й строки значение от 01.02.2006 минус 31.01.2006

вот
22 мар 06, 09:56    [2474752]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
vooo
Member

Откуда:
Сообщений: 1316
пользователь выбирает промежуток времени
например 01.01.2006 - 31.01.2006

визуальный результат нужен:
1й строки = значение от 02.01.2006 минус значение от 01.01.2006
2-й строки = значение от 03.01.2006 минус значение от 02.01.2006


create table #t (val int,date datetime);
insert into #t values (10,'3 jan 2006')
insert into #t values (15,'4 jan 2006')
insert into #t values (55,'2 jan 2006')
insert into #t values (58,'1 jan 2006')
go
select t2.val CURRVAL,t1.val PREVVAL,t2.date, t2.val - t1.val difference
from   #t t1, #t t2
where t1.date < t2.date
and t2.date = (select min(date)
                from   #t t3
                where  t3.date > t1.date)
order by 3
22 мар 06, 10:07    [2474813]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
Плюс еще параллельный вопрос
аналогичная ситуация
только промежуток между значениями не день, а ЧАС
то есть первое значение - это разница между текущим и следующим ЧАСОМ

с временем в sql-запросах вообще не работал
22 мар 06, 10:08    [2474817]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
voo, запроса возвращает
значения начиная с 02.01.2006
нужно с 01.01.2006 и разницу между текущим и следующим (а не прдыдущим) :)
22 мар 06, 10:16    [2474870]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
saint
Member

Откуда: Архангельск
Сообщений: 2262
если у вас одна запись на час, то также как у voo в последнем посте
22 мар 06, 10:17    [2474877]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом  [new]
sergie
Member

Откуда: Оттуда
Сообщений: 113
Спасибо всем.
Все понял
22 мар 06, 10:24    [2474927]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить