【发布时间】:2017-09-05 07:37:12
【问题描述】:
我想按一列分组,获取第二列的最小值和最大值,并且(这是棘手的部分!)从第三列中获取值,其中第二列在组中具有最小值。
例子:
我的表:
ID TS GRP
==================
1 20 A
2 20 B
3 10 A
4 30 A
5 10 B
6 40 A
期望的结果(ID 应该是 TS 最小的记录中的值):
ID MIN_TS MAX_TS GRP
============================
3 10 40 A
5 10 20 B
总的来说,分组查询很简单:
SELECT <???> AS ID, MIN(TS) AS MIN_TS, MAX(TS) AS MAX_TS, GRP
FROM MyTable
GROUP BY GRP
但是 ID 部分呢?它不适用于分组,对吗?但为什么?最好的解决方法是什么?
【问题讨论】:
-
您需要 JOIN 才能找到该行。
-
出现平局怎么办?或者它们不能发生(即您对 TS + GRP 有独特的约束)?
-
你是对的,这就是为什么它不适用于分组的原因......
标签: sql sql-server