如何解决“列'ColumnName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”

时间:2019-04-11 19:49:28

标签: sql group-by

需要为我的SQL查询修复上述代码错误

错误:“列'ColumnName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。”

我的印象是需要实现聚合函数,但是我不知道如何实现。

我的查询:

SELECT 
TransactionID,
InvoiceSum.TransNum,
PosTransaction.OrderID,
PosTransaction.PatientID, 
Patient.ID,
Patient.MedicalRecordNum,
PosTransaction.OfficeNum AS Pos_OfficeNum,
Patient.ExamOffice,
TransactionDate,
Patient.FirstName,
Patient.LastName,
Patient.BirthDate,
Patient.Sex,
Item.ItemNum,
Item.ItemName
FROM PosTransaction Inner Join Patient ON PosTransaction.PatientID = 
Patient.ID

Inner Join InvoiceSum ON PosTransaction.TransactionID = 
InvoiceSum.TransNum
Inner Join InvoiceDet ON InvoiceSum.InvoiceID = InvoiceDet.InvoiceID
Inner Join Item ON InvoiceDet.ItemID = Item.ID

GROUP BY Patient.ID

ORDER BY TransactionDate

我希望一旦我了解如何使用GROUP BY,就可以正确地从输出中删除重复的客户名称。

1 个答案:

答案 0 :(得分:0)

如果仅按Patient.ID分组,其他列将如何处理? (服务器不知道应该怎么做,因此会引发错误)

服务器不知道您要对其他列执行的操作。 (因此,您需要聚合函数来告知SQL Server)

简单的例子:

ID|salary
01|1000
01|2000
01|3000

如果我仅在此处按ID分组:

select id, salary
from sample
group by id

您如何计算薪水?总和,最大,最小? 因此,您需要聚合函数:

select id, sum(salary)
from sample
group by id

如果有任何疑问,请在下面评论。