синтаксическая ошибка SQL Access Вложенные операторы IIF ISNULL

Я получаю синтаксическую ошибку, я несколько раз менял, перепечатывал и даже пытался нарисовать карту. Теперь, когда моя голова вот-вот взорвется, я в отчаянии обращаюсь к тому, у кого есть на это глаз.

Я мог бы подталкивать его, пытаясь получить четкое количество операторов iif, но, вероятно, этот вопрос менее технический и больше касается наблюдения...

У меня нет проблем с предложениями FROM/WHERE, но они предоставлены для дополнительной справки.

Пожалуйста, помогите мне, если я делаю что-то совершенно неправильно:

(SELECT DISTINCT(COUNT(IIF(ISNULL(CombineTables.[Product Description]),

IIF(ISNULL(CombineTables.[Product Number (OEM)]),


IIF(ISNULL(CombineTables.[Product Number (under supplier PA)],"Incomplete Data",CombineTables.[Product Number (under supplier PA)])),

CombineTables.[Product Number (OEM)]),

CombineTables.[Product Description])))
FROM CombineTables WHERE [PA#]=Forms!PADiagnosticsForm!Combo2 AND "QTR." & " " & CombineTables.Quarter & "-" & CombineTables.Year=Forms!PADiagnosticsForm!List68)

FROM CombineTables
WHERE CombineTables.[Price Agreement Price]*CombineTables.Quantity-CombineTables.[Total Extended Price]<>0 And CombineTables.[PA#]=Forms!PADiagnosticsForm!Combo2 And "QTR." & " " & CombineTables.Quarter & "-" & CombineTables.Year=Forms!PADiagnosticsForm!List68;

Я благодарю вас заранее.


person Dm3k1    schedule 01.04.2013    source источник
comment
Удалось ли вам использовать простую комбинацию IIF / ISNULL?   -  person PM 77-1    schedule 02.04.2013
comment
Это один из самых непонятных и запутанных запросов, которые я когда-либо видел. Мне очень трудно прочитать это или даже угадать, что вы здесь имеете в виду. Кроме того, похоже, что вы извлекли это из другого более крупного запроса, кое-чего не хватает, это выглядит недействительным (начинается с (). Также в ваших предложениях WHERE есть странные вещи, например "QTR." & " ", почему бы не просто "QTR. ", ведь это одно и то же? Сначала очистите этот запрос, удалите предложения WHERE или используйте жестко закодированные значения для отладки, затем удалите все и создайте свой SELECT по крупицам, проверяя его очень вовремя.   -  person Renaud Bompuis    schedule 02.04.2013
comment
Похоже, что запрос пытается рассматривать DISTINCT как функцию, но это не функция в Access SQL.   -  person HansUp    schedule 02.04.2013
comment
Прошу прощения, да, это неполный запрос. Существует ведущий оператор выбора. Будет обновлено в ближайшее время.   -  person Dm3k1    schedule 02.04.2013


Ответы (1)


В вашем запросе есть несколько ошибок:

  1. Это неполное. ( перед первым SELECT делает его выражением перед вторым FROM CombineTables. Поэтому отсутствует ведущий SELECT. Если это не полный запрос, то это не поможет людям, пытающимся вам помочь.
  2. NZ(A,B) is identical to and more concise thanIIF(ISNULL(A, B, A))`
  3. Ваш шаблон SELECT COUNT вызывает подозрение, особенно со всеми IIF(ISNULL. Поскольку на самом деле то, что COUNT-ed, никогда не бывает NULL, поэтому вы можете также переписать весь блок в стороне от COUNT как COUNT(1). COUNT в отличие от SUM не заботится о подсчитываемых фактических значениях, он заботится только о том, является ли значение NULL (считается как 0, все, что не NULL, считается как 1).
person RichardTheKiwi    schedule 02.04.2013