2015-11-30 3 views
0

Я пытаюсь выполнить этот запрос на доступ:Запрос MS Access Sql не является частью функции агрегата. Использование с функцией Count

SELECT DISTINCT Phys.FName, 
Phys.LName, COUNT(*) AS NumberPatients 
FROM Phys, Summary 
WHERE (((Summary.Phys_ID)=[Enter Physician Id])) 
AND Phys.Phys_ID = Summary.Phys_ID; 

, но я получаю эту ошибку:

You tried to execute a query that does not include the specified expression "FName" as part of an aggregate function. (Error 3122)

отлично Запрос работает только с графом или просто отчетливый FName/LName. Это только проблема, когда я их совмещаю.

+0

Вам нужна группа Phys.FName, Phys.LName – SqlACID

ответ

2

Использование group by, не select distinct, и явное JOIN:

SELECT Phys.FName, Phys.LName, COUNT(*) AS NumberPatients 
FROM Phys INNER JOIN 
    Summary 
    ON hys.Phys_ID = Summary.Phys_ID 
WHERE Summary.Phys_ID = [Enter Physician Id] 
GROUP BY Phys.FName, Phys.LName; 
0

Попробуйте

SELECT DISTINCT Phys.FName, 
Phys.LName, COUNT(*) AS NumberPatients 
FROM Phys, Summary 
WHERE (((Summary.Phys_ID)=[Enter Physician Id])) 
AND Phys.Phys_ID = Summary.Phys_ID 
Group by Phys.FName, Phys.LName 

При использовании агрегатной функции с другими столбцами, вы должны группе этих столбцов, чтобы получить результат. Для получения дополнительной информации читайте documentation

+0

Большое вам спасибо! Группе было все, что мне нужно. – MissElizabeth

+0

приветствуется :) Примите любой из ответов. С уважением – PK20