【问题标题】:Unable to use sum function with derived table result无法将 sum 函数与派生表结果一起使用
【发布时间】:2019-09-19 16:22:52
【问题描述】:

我有一个作业问题要求我创建一个选择语句 计算会计软件包的总成本 于 1998 年安装在每个 属于会计部门的计算机

我已经能够使用以下语句找到符合这些要求的软件包及其成本。

select pack, softcost from software where year(instdate) = 1998 and pack in 
 (select pack from package where PAcKTYPE = 'accounting') and TAGNUM in 
  (select TAGNUM from pc where location = 'sales')

但是,当我尝试使用以下语句计算这些软成本的总和时,我收到一条错误消息,指出“列 'software.SOFTCOST' 在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY 子句。”

select sum(SOFTCOST) from
(select pack, softcost from software where year(instdate) = 1998 and pack in 
 (select pack from package where PAcKTYPE = 'accounting') and TAGNUM in 
  (select TAGNUM from pc where location = 'sales') group by pack) as table1

有人能引导我走向正确的方向吗?我已经附上了我第一个选择语句的结果和下面我的数据库中的数据。

【问题讨论】:

  • 在您的内部查询中,您尝试使用select pack, softcost,但仅尝试使用group by pack。你要么需要sum(softcost),要么需要group by softcost——无论哪个适合你的需要。
  • 开始学习最佳实践——其中许多将避免难以发现的逻辑错误。给每个表一个别名(简短但有用,而不是单个字符)并在引用任何列时使用它。始终使用适当的模式名称引用表。最后看你的要求。现在再看一遍。属于会计部门的计算机?

标签: sql-server select aggregate-functions


【解决方案1】:

您的选择最多只有一列,因此不需要分组。删除你的组应该没问题

【讨论】:

    猜你喜欢
    • 2017-04-02
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多