假设我有这张桌子:
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。
预先感谢
答案 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