我有一张桌子,我需要按以下方式排序:
SELECT RANK() OVER (
ORDER BY Salary DESC
)
,CASE
WHEN Salary IS NULL
THEN 'NO DATA TO BE SHOWN'
ELSE Salary
,Count(Fname)
,Total(Salary) FROM dbo.Employees
我说错了:
列'dbo.Employees.Salary‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY
子句中。
为什么会这样呢?
发布于 2020-11-14 11:35:39
列'dbo.Employees.Salary‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。 为什么会这样呢?
聚合函数返回整个表的单个值,您不能在它们旁边选择字段--这是没有意义的。例如,您有一个whole表,您为整个whole表应用Sum(marks)
,然后在查询中选择学生的名字Select studentname
。数据库引擎将选择哪个学生的名字?令人困惑
列“选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中”。
我尝试过这个-使用内部查询。
SELECT RANK() OVER (ORDER BY SAL DESC) RANK,FNAME,DEPARTMENT
CASE
WHEN SAL IS NULL THEN 'NO DATA TO BE SHOWN'
ELSE SAL
END
FROM
(SELECT COUNT(FNAME) FNAME, SUM(SALARY) SAL, DEPARTMENT
FROM TESTEMPLOYEE
GROUP BY DEPARTMENT) t
https://stackoverflow.com/questions/64836878
复制相似问题