首页 > 解决方案 > 对于每个 Id2 值,获取 Id1 最低的一行,以及 Id1 最高的另一行

问题描述

我有一个有 2 列的表,如下所示:

Id1     Id2
------------
5286    1481
5391    1482
5546    1483
5702    1482
5747    1482
5833    1484
5850    1482
5878    1485
6000    1482
6035    1486
6181    1482
6259    1481
6274    1487
6378    1488
6379    1489
6400    1482
6469    1485
6575    1485
6822    1488
6876    1481
6901    1482
6931    1481
6939    1490
7083    1491
7214    1482
7241    1492
7429    1493
7498    1482
7541    1482
7618    1494
7745    1495
7797    1496
7869    1482

对于每个Id2值,我想获得最低的Id1一行,以及最高的另一行Id1,例如Id2 = 1482

1482    5391
1482    7869

如何编写我的(Transact)SQL 查询来实现这一点?

先感谢您。

标签: sqlsql-servertsql

解决方案


试试这样:http ://sqlfiddle.com/#!18/db733/3/0

SELECT [Id2], MIN(Id1) AS [Id1]
FROM [table]
GROUP BY [Id2]

UNION ALL

SELECT [Id2], MAX(Id1) AS [Id1]
FROM [table]
GROUP BY [Id2]

ORDER BY [Id2], [Id1]

通过使用分组,您可以找到maxmin的每个值[Id2]


推荐阅读