sql - 如何根据条件选择每组的第一行

标签 sql sql-server sql-server-2008

我有一个名为DealOffers:的表

input table

I want to select only one record from each group of dealIds where Price is minimum.

即:预期输出应该是这样的:

enter image description here

最佳答案

你可以做这样的事情。但是,如果您最终必须大规模执行此操作,则应该考虑性能。

select *
from (
    select *,
        SeqNum = row_number() over(
            partition by DealId
            order by Price)
    from DealOffers) do
where do.SeqNum = 1;

关于sql - 如何根据条件选择每组的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37914837/

相关文章:

mysql表连接问题

java - 第二次使用准备好的语句无法到达临时表

sql-server - 删除重复行并保留一行

sql - 如何更新 postgres 中时间戳字段的一部分?

sql - 在sql中计算增量(当前行和上一行的差异)

mysql - 在 MySQL 中存储 0.5

sql-server - 选择/删除重复项

sql-server - SQL Server 中的计算列

c# - 不使用第二个查询返回最后插入的 ID

sql - 在 SQL Server 上的多个数据库中搜索列名