#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
предложении внешнего запроса, он не может найти это имя в доступных полях и, следовательно, предполагает, что оно должно быть параметром.