Почему Access запрашивает значение параметра при запуске SQL

#sql #ms-access

Вопрос:

 Select count([Customer Number])
From
(
    SELECT distinct [Customer Number] amp; [Membership Number], [Customer Number]
    FROM Data
    Where [Customer Number] = 2000004
)
group by [Customer Number] amp; [Membership Number];
 

Ищу значение параметра Номера участника. Почему это так?

Комментарии:

1. Т. е. подзапрос не возвращает [Номер участника], но вы все равно пытаетесь получить доступ к этому столбцу в ГРУППЕ ПО.

Ответ №1:

Для внешнего доступны только SELECT те поля, которые перечислены в подзапросе SELECT . Этот список полей подзапроса не включает [Membership Number] в себя отдельное поле. Это только часть выражения, которое объединяет 2 поля. Доступ назначит псевдоним (например, «Expr», за которым следует число) этому вычисляемому столбцу. И он не возвращает столбец с именем [Membership Number] .

Вот пример непосредственного окна, который иллюстрирует проблему …

 strSubQ = "SELECT DISTINCT [Customer Number] amp; [Membership Number], [Customer Number] FROM Data"
Set rs = CurrentDb.OpenRecordset(strSubQ)

' what are the names of the fields available from the subquery?
For i = 0 To (rs.Fields.Count - 1): ? rs.Fields(i).Name : Next
Expr1000
Customer Number
 

Поэтому, когда Access видит [Membership Number] в GROUP BY предложении внешнего запроса, он не может найти это имя в доступных полях и, следовательно, предполагает, что оно должно быть параметром.