选择查询它不包含在聚合函数或GROUP BY子句中

时间:2016-04-28 10:20:54

标签: sql stored-procedures group-by

我收到此错误:

  

Msg 8120,Level 16,State 1,Procedure ReportEmployeesOnLeave,第17行   列'Employee.EmployeeId'在选择列表中无效,因为它   不包含在聚合函数或GROUP BY中   子句。

enter image description here

2 个答案:

答案 0 :(得分:0)

错误信息如何?你不明白?它非常不言自明。这意味着:如果您使用group by,则所有选定的属性都必须位于group by或聚合函数中(COUNT()SUM()等)

因此,如果您更正了group by,则不应该出现任何错误:

...
GROUP BY   TC.Date
,          TC.DayName
,          TC.DayType
,          TC.ScheduleId
,          TC.LeaveTaken
,          TC.Remarks
,          E.EmployeeId
,          E.EmployeeNo
,          E.Name
,          E.ScheduleId
,          C.BusinessName

这是否能提供您正在寻找的结果,这是另一个问题。

对于将来的问题:请将代码添加为文本,而不是图片。这样,回答者可以简单地复制粘贴,而不是全部输入。

修改:如果您不想group by所有选定的属性,您可以使用窗口函数(假设sql server 2012或更高版本):

SELECT       * -- Everything you need
,            COUNT(TC.AbsentCalculation) OVER(PARTITION BY E.Name, E.EmployeeId) AS AbsentCount
,            SUM(TC.AbsentCalculation) OVER(PARTITION BY E.Name, E.EmployeeId) AS TotalAbsents
FROM         ...

如果您实施此功能,您根本不需要GROUP BY

答案 1 :(得分:0)

将所有字段写入Group By原因