SQL:消除一列中具有一个重复值的行

时间:2013-06-26 14:42:35

标签: sql sql-server-2008

我有一个表可能在一列中包含重复值。对于该列中的每个不同值,我只需要选择索引最小的行。我尝试了很多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

1 个答案:

答案 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