【发布时间】: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