![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с запросом(хп) [D7, Firebird 1.5]
Domkrat © (2004-07-27 14:56:00)Ув. Мастера. Подскажите пожалуйста.
Таблица: MOVE
ID LS OLDVALUE NEWVALUE MOVEDATE
1 1 Петя Коля
2 1 Коля Саша
3 1 Саша Игорь
4 1 Игорь Вася 01.01.2004
Требуется одна строка
ID LS OLDVALUE NEWVALUE MOVEDATE
1 Петя Вася 01.01.2004
Domkrat (2004-07-27 15:31:00) [1]Вариант Sandman25 © (27.07.04 15:03) [2] удовлетворяет всем условиям.
Всем спасибо.
Sandman25 (2004-07-27 15:28:00) [2]понятно
dimds (2004-07-27 15:26:00) [3]ну это примерный вариант разумеется нужные условия и выходные параметры нужно подставить
Sandman25 (2004-07-27 15:24:00) [4][7] dimds (27.07.04 15:23)
Во вложенных select должно быть where.
dimds (2004-07-27 15:23:00) [5]select pole1...poleN where id=(select min(id) from table) into
[outparams];
select pol1....polen where id=(select max(id) from table) into
[outparams];
suspend;
Domkrat (2004-07-27 15:14:00) [6]Ведется движение абонентов в течении месяца, и требуется
взять только начальные и конечные значения определенных полей
для составления отчетности.
dimds (2004-07-27 15:09:00) [7]а прынцип выборки какой?
Sandman25 (2004-07-27 15:08:00) [8]>Спасибо большое, но и первый запрос довольно быстро сработал.
Это заслуга оптимизатора, он оказался на высоте.
Domkrat (2004-07-27 15:07:00) [9]Спасибо большое, но и первый запрос довольно быстро сработал.
Попробую написать хп.
Sandman25 (2004-07-27 15:03:00) [10]Лучше написать ХП с
select min(id), max(id), ls
from move
group by id
и в цикле перебирать получаемые значения и извлекать оставшиеся значения
Sandman25 (2004-07-27 15:01:00) [11]select ls,
(select oldvalue from move m1 where m.ls=m1.ls and
id=(select min(id) from move m2 where m2.ls=m.ls)),
(select newvalue from move m1 where m.ls=m1.ls and
id=(select max(id) from move m2 where m2.ls=m.ls))
from move m
group by ls