sql - 按主键与主键和依赖列分组
问题描述
CREATE TABLE T1 (a int primary key, b int);
SELECT a, b FROM T1 GROUP BY a;
--Msg 8120 级别 16。列 'T1.b' 在选择列表中无效,因为它既不包含在聚合函数或 GROUP BY 子句中。
我原以为这会起作用,因为 b 列显然是一个依赖列,所以按 a、b 分组显然与按 a 分组相同。
我正在使用 SQL Server 2016。
解决方案
SQL Server 不支持GROUP BY
. 所有数据库在某些方面都不同于标准规范。因此,尽管标准允许您执行您想要执行的操作,但并非所有数据库都支持该功能。
只需使用聚合函数:
SELECT a, MAX(b) as b
FROM T1
GROUP BY a;
或将其包含在GROUP BY
:
SELECT a, b
FROM T1
GROUP BY a, b;
我还应该指出,GROUP BY
在这种情况下是不必要的。我怀疑这是在适当的地方参考更复杂的查询。
推荐阅读
- python - (AttributeError: 'NoneType' object has no attribute '__array_interface__') 错误是什么意思?
- html - 使用角度限制的提前输入
- r - 数据框每列上的多个线性模型
- c# - 如何更改以打印最少的数字
- angular - Docker & angular:执行 ngcc 后的循环依赖
- azure - Azure CI Pipeline 刚开始运行时发送电子邮件
- excel - 在保留日期格式的同时将日期从 CSV 复制到 Excel
- git - 如何在 git pull 上过滤大文件?
- uinavigationcontroller - 从另一个视图调用导航视图 Swift 5
- android - Activity 在 Android 中启动时为视图设置动画