不使用分组依据而使用Min变量,而按ID分组

时间:2018-09-07 11:54:03

标签: sql sql-server tsql

假设我有这张桌子:

id ¦ value ¦ idRelation
------------------------
1  ¦ 1     ¦ 1234
1  ¦ 2     ¦ 1345
1  ¦ 3     ¦ 1456
2  ¦ 1     ¦ 8524
2  ¦ 2     ¦ 6547
3  ¦ 1     ¦ 9852
4  ¦ 2     ¦ 4569
4  ¦ 3     ¦ 4985

我需要对按id分组的值变量使用最小值,以便获得关系id。

基本上我需要以下结果

id ¦ value ¦ idRelation
------------------------
1  ¦ 1     ¦ 1234
2  ¦ 1     ¦ 8524
3  ¦ 1     ¦ 9852
4  ¦ 2     ¦ 4569

到目前为止,我尝试使用WITH TIES,但是问题是我需要每个id组的最小值,而不仅仅是1s。

预先感谢

2 个答案:

答案 0 :(得分:2)

其他选择是将row_number()函数与 ties 子句一起使用:

select top (1) with ties t.*
from table t
order by row_number() over (partition by id order by value);

答案 1 :(得分:2)

这应该可以完成工作:

SELECT id, value,idRelation FROM
  (SELECT *,ROW_NUMBER() OVER (PARTITION BY id ORDER BY value) N FROM table) T
WHERE N=1