powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Драйвер ODBC VFP возвращает: Operator/operand type mismatch
4 сообщений из 54, страница 3 из 3
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33557606
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро. Ну что, всё получилось? :)
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33557720
firerer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIMM@Доброе утро. Ну что, всё получилось? :)
спасибо: все получилось, но возникают новые вопросы :)
Select
Reg.sp478 As Nomen,
Reg.Period As Period,
SUM(Reg.sp479 - RegOst.sp101) As Necessary
From
RG480 As Reg
Left join
RG98 As RegOst On RegOst.sp99 = Reg.sp478
Left join
sc60 As Nom On Nom.Id = Reg.sp478
Where
(Reg.sp479 - RegOst.sp101 > 0)
AND
Reg.Period = {^2006-02-01}
AND
RegOst.Period = {^2006-02-01}
Group by
Nomen

При попытке вставить в условие вместо (Reg.sp479 - RegOst.sp101 > 0)
функцию SUM(Reg.sp479 - RegOst.sp101) > 0 ругается на отсутсвие файла sum.prg (я так понимаю файл с описанием самой функции?)
Есть ли возможность указать так:
Where
(Necessary >0)
?
и если да - то как?
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33558108
Фотография DIMM@
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
C функ. SUM у тебя все нормально(читай на нее help).
Мне кажется ты неккоректно ставиш условия выбора. Это условие(с Sum) не зависит от того где находится указатель записи при выборке, оно как бы общее. Загоняй лучше свой Select под If,его условием и будет проверка больше ли сумма нуля, и если да то Select. А в селекте выкидывай это условие.
...
Рейтинг: 0 / 0
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
    #33562060
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi firerer!

1) Такой БУКВАЛЬНО запрос является некорректным - в выражении группировки
должны быть указаны ВСЕ поля, которые не находятся внутри агрегирующих
функций (т.е. внутри SUM в твоём случае), или эти поля должны в списке
отбора быть помещены внутрь агрегирующих функций (например MIN или MAX, т.к.
в фоксе нету LAST/FIRST или других более сложных аналитических функций)
2) Агрегирующая функция не может применяться в WHERE части - ибо если
говорить грубо, то WHERE работает ещё ДО выполнения запроса (фильтрует
исходные таблицы) - и соответственно она никак не может видеть "результат"
агрегирования. Зато такой результат виден в HAVING части - она кстати для
того и существует - это фильтр для "результата", а не для "исходных данных".
При этом можно как повторить условие из списка полей, так и просто обратится
по имени нового - "вычисленного" поля. Из ещё других интересных
возможностей - в HAVING можно использовать такие выражения, которых нету в
списке полей - например в запросе вычислять только SUM(поле), а в HAVING
проверять MAX(поле).

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
4 сообщений из 54, страница 3 из 3
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Драйвер ODBC VFP возвращает: Operator/operand type mismatch
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]