我有一个表可能在一列中包含重复值。对于该列中的每个不同值,我只需要选择索引最小的行。我尝试了很多distinct()min()和group by的组合,但是还没有能够解决这个问题。此查询将在sql server 2008上运行。
color | index | user_id | organization_code
blue 44 xxx yyy
blue 66 xxx yyy
red 12 aaa bbb
white 55 ccc ddd
white 68 xxx yyy
查询将返回第一行,第三行和第四行。
blue 44 xxx yyy
red 12 aaa bbb
white 55 ccc ddd
答案 0 :(得分:2)
请勿使用index
等关键字作为列名。使用窗口函数解决您的问题,请参阅下面的示例
select color, [index], [USER_ID], organization_code from (
select *, ROW_NUMBER() over (partition by color order by [index]) as ranker from table
) Z where ranker = 1