SQL Select 语句未返回所需的列

SQL Select statement not returning desired columns

我有一个包含 10 行的 table(样本),其中包含 place_name 列,每个位置有 5 天的数据(第 1 天、第 2 天、...、第 5 天),和 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;

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

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

该代码不起作用并给出错误提示,

"Column 'sample.place_name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause."

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

SELECT MAX(TotalSum) AS MAXsum FROM sample;

在 Microsoft SQL 服务器管理工​​作室工作,2014 年。

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

中聚合列的组

试试这个:

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

如果您希望查询 return 具有最大 MAX(TotalSum) 的 place_name 那么您需要这样做:

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