查询以返回基于其他列的重复值的行

时间:2018-09-25 12:19:07

标签: sql sql-server

我在SQL Server中有一个表,格式如下:

enter image description here

我想根据以下条件获取行:

  • 如果行中有多个但相似的Customer_IDOrder_Number,则仅返回日期最长的那些行
  • 否则,返回其余行

所以在这种情况下,结果将是第3、4和5行。

关于如何使用SQL查询实现此目标的任何想法?该表没有主键或唯一键。

1 个答案:

答案 0 :(得分:2)

使用窗口功能row_number()

select * 
from 
   (
   select *, 
         row_number() over(partition by Customer_ID,Order_Number order by date desc) as rn 
   from your_table
   ) t where rn=1

或使用关联的子查询

    select * 
    from t
    where date in (
                   select max(date) 
                   from t t1 
                   where t1.Customer_ID=t.Customer_ID and t1.Order_Number=t.Order_Number
                  )