|
|
|
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
|
|||
|---|---|---|---|
|
#18+
Доброе утро. Ну что, всё получилось? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 10:41 |
|
||
|
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
|
|||
|---|---|---|---|
|
#18+
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) ? и если да - то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 11:14 |
|
||
|
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
|
|||
|---|---|---|---|
|
#18+
C функ. SUM у тебя все нормально(читай на нее help). Мне кажется ты неккоректно ставиш условия выбора. Это условие(с Sum) не зависит от того где находится указатель записи при выборке, оно как бы общее. Загоняй лучше свой Select под If,его условием и будет проверка больше ли сумма нуля, и если да то Select. А в селекте выкидывай это условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2006, 13:00 |
|
||
|
Драйвер ODBC VFP возвращает: Operator/operand type mismatch
|
|||
|---|---|---|---|
|
#18+
Hi firerer! 1) Такой БУКВАЛЬНО запрос является некорректным - в выражении группировки должны быть указаны ВСЕ поля, которые не находятся внутри агрегирующих функций (т.е. внутри SUM в твоём случае), или эти поля должны в списке отбора быть помещены внутрь агрегирующих функций (например MIN или MAX, т.к. в фоксе нету LAST/FIRST или других более сложных аналитических функций) 2) Агрегирующая функция не может применяться в WHERE части - ибо если говорить грубо, то WHERE работает ещё ДО выполнения запроса (фильтрует исходные таблицы) - и соответственно она никак не может видеть "результат" агрегирования. Зато такой результат виден в HAVING части - она кстати для того и существует - это фильтр для "результата", а не для "исходных данных". При этом можно как повторить условие из списка полей, так и просто обратится по имени нового - "вычисленного" поля. Из ещё других интересных возможностей - в HAVING можно использовать такие выражения, которых нету в списке полей - например в запросе вычислять только SUM(поле), а в HAVING проверять MAX(поле). Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.02.2006, 01:31 |
|
||
|
|

start [/forum/topic.php?fid=41&gotonew=1&tid=1592269]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
213ms |
get topic data: |
12ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 242ms |
| total: | 576ms |

| 0 / 0 |
