SQL Select语句未返回所需的列

时间:2016-02-16 20:03:07

标签: sql sql-server sql-server-2014

我有一个包含10行的表(示例),其中包含place_name的列,每个位置的5天数据(day1,day2,...,day5),以及5的总和列(TotalSum)天。开头的TotalSum充满了空值。

place_name | day1 | day2 | day3 | day4 | day5 | TotalSum
PlaceA     |    1 |    1 |    1 |    1 |    1 |     NULL

我有一个更新声明,总结五天,并将它们放入10个地点中每个地点的TotalSum列。

update sample set sample.TotalSum = day1+day2+day3+day4+day5;

然后我想选择具有最大TotalSum值的位置(place_name)。我一直在尝试使用以下行:

SELECT place_name, MAX(TotalSum) AS MAXsum FROM sample;

代码不起作用,并提出错误说,

  

" Column' sample.place_name'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。"

如果我执行下面的代码,那么我得到的只是MAXsum值,没有别的。

SELECT MAX(TotalSum) AS MAXsum FROM sample;

使用Microsoft SQL Server Management Studio,2014。

1 个答案:

答案 0 :(得分:2)

您收到此消息的原因是您正在尝试聚合列TotalSum,但您还有一个非聚合列place_name。但是您没有在GROUP BY子句

中定义可以聚合列的组

试试这个:

SELECT place_name, MAX(TotalSum) AS MAXsum 
FROM sample 
GROUP BY place_name

如果您希望查询返回最大MAX(TotalSum)的place_name,那么您需要这样做:

    SELECT TOP 1 place_name, MAX(TotalSum) AS MAXsum 
    FROM sample 
    GROUP BY place_name
    ORDER BY MAXsum DESC