如何选择具有指定条件的不同行

And*_*rew 2 sql sql-server

假设有一张桌子

_ _
a 1
a 2
b 2
c 3
c 4
c 1
d 2
e 5
e 6
Run Code Online (Sandbox Code Playgroud)

如何为每个组的所有行选择不同的最小值?

因此,这里的预期结果是:

_ _
a 1
b 2
c 1
d 2
e 5
Run Code Online (Sandbox Code Playgroud)

编辑

我的实际表包含更多列,我想全部选择它们。这些行仅在最后一列(示例中的第二列)不同。我是SQL的新手,可能我的问题在它的初始视图中不正确。

实际的架构为:

| day | currency ('EUR', 'USD') | diff (integer) | id (foreign key) |
Run Code Online (Sandbox Code Playgroud)

是重复的对(day, currency),相差(diff, id)。我想查看一个表,其中具有唯一表对(day, currency)diff并且原始表中的表对最少。

谢谢!

Rom*_*kar 5

在您的情况下,就这么简单:

select column1, min(column2) as column2
from table
group by column1
Run Code Online (Sandbox Code Playgroud)

对于两列以上,我可以建议:

select top 1 with ties
    t.column1, t.column2, t.column3
from table as t
order by row_number() over (partition by t.column1 order by t.column2)
Run Code Online (Sandbox Code Playgroud)

看一下这篇文章/sf/answers/955700301/