![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SQL [D5, dBase, FoxPro, ]
kd © (2001-12-10 08:03:00)Времени сутов всем
Поможите люди добрые кто чем может Проблема в следующем:Делаю запрос
SELECT поле1, sum(поле2)
FROM "Table.DBF"
WHERE поле1 BETWEEN :Param1 AND :Pаram2
GROUP BY поле1
ORDER BY поле1
где параметры-даты начала и конца выборки по полю "поле1"
И из полученного запроса мне надо выбрать максимум из Sum(поле2)
для чего вешаю на событие AfterOpen обработчик
S:=0;
Beep;
Query1.First;
While not Query1.Eof Do
Begin
If s<Query1.FieldByName("SUM OF SP428").AsFloat Then s:=Query1.FieldByName("SUM OF SP428").AsFloat;
Query1.Next;
Всё работает но нельзя ли всё сделать в одном запросе и не писать перебор While not Query1.Eof...
Посоветуйте пожайлуста
Alex Y (2001-12-10 09:57:00) [1]Boo можно и тек, только Вместо
ORDER BY sum(поле2) DESC лучше
ORDER BY 2 DESC или ORDER BY Col2 DESC (точно не помню как в BDE)
Boo (2001-12-10 09:16:00) [2]<kd> пока попробуй
SELECT поле1, sum(поле2)
FROM "Table.DBF"
WHERE поле1 BETWEEN :Param1 AND :Pаram2
GROUP BY поле1
ORDER BY sum(поле2) DESC
Если DESC пройдет (обратная сортировка), то бери первую запись, если не пройдет, то последнюю
Boo (2001-12-10 09:14:00) [3]<Alex Y> не протянет...
Alex Y (2001-12-10 09:11:00) [4]А SELECT поле1, MAX(sum(поле2)) ... не пробовал?