首页 > 解决方案 > 如何修复“列 'ColumnName' 在选择列表中无效,因为它不包含在聚合函数或 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,我希望看到重复的客户名称从输出中删除。

标签: sqlgroup-by

解决方案


如果只按 Patient.ID 分组,其他列会怎样?(服务器不知道它应该做什么,所以它会引发错误)

服务器不知道您想对其他列做什么。(所以你需要聚合函数来告诉 SQL 服务器)

简单的例子:

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

如果您有任何问题,请在下方评论。


推荐阅读