首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在select中使级别()大于查询工作?

如何在select中使级别()大于查询工作?
EN

Stack Overflow用户
提问于 2020-11-14 17:50:31
回答 1查看 43关注 0票数 0

表象

我有一张桌子,我需要按以下方式排序:

  1. 需要按工资对部门进行排名;
  2. 需要显示是否薪水= NULL -“不显示数据”消息
  3. 需要将支付给部门的工资总额相加
  4. 需要清点部门的人员
代码语言:javascript
运行
复制
    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子句中。

为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2020-11-14 19:35:39

列'dbo.Employees.Salary‘在select列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。 为什么会这样呢?

聚合函数返回整个表的单个值,您不能在它们旁边选择字段--这是没有意义的。例如,您有一个whole表,您为整个whole表应用Sum(marks),然后在查询中选择学生的名字Select studentname。数据库引擎将选择哪个学生的名字?令人困惑

列“选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中”。

我尝试过这个-使用内部查询

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64836878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档