2013-10-10 3 views
0

Это должно быть просто! У меня есть большая таблица с 3 числовыми полями. Я хочу рассчитать значение на основе этих трех полей. Затем возвращаются только записи, где это значение равно < 1 (скажем). Проблема заключается в том, что вычисление слишком сложно для доступа, если я использую только одно выражение. Чтобы упростить объяснение, предположим, что я хочу рассчитать:Datatype несоответствие в выражении критериев

fieldx^2 + fieldy^2 + fieldz^2.

Итак, я создал подзапрос, который разбивает вычисления на 3 поля. Один из них ispr1: fieldx^2, один expr2: fieldy^2 и expr3 - fieldz^2. Затем я создаю expr4, который является expr1 + expr2 + expr3. Затем я использую этот подзапрос в другом запросе, который отлично работает, и я вижу, что поле expr4 было рассчитано правильно. Так что я теперь пытаюсь выбрать только записи, где expr4 < 1 с использованием

select * from subquery where expr4 <1

И я получаю ошибку «Несоответствие Тип данных в выражении критериев». Странно, когда я пытаюсь выбрать expr1,2 или 3, он работает нормально.

+0

Вам может понадобиться CAST expr4 для числового типа, например, целое число, десятичной, плавать и т.д. Таким образом, вы бы expr4: CInt (expr1 + expr2 + expr3) – twoleggedhorse

+0

Я пробовал использовать cdbl, но, похоже, это не имеет никакого значения. –

+0

Можете ли вы показать фактические вычисления для expr1-> 3. – twoleggedhorse

ответ

-1

может быть есть некоторые обнуляет, попробуйте

where nz(expr4, 1) <1 
Смежные вопросы