SQL去除重复数据

本文介绍了一种在SQL查询中去除重复数据并按时间排序的方法,利用row_number()函数配合partition by子句实现分组排序,选取每组第一条记录。

在SQL查询中,需要去除重复选项,并且按照时间来进行排序,取排序分组中第一条数据。

这里写图片描述

然后在网上找到了解决方案,使用分析函数row_number() over (partiion by … order by …)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。

其中,partition by 是指定按哪些字段进行分组,这些字段值相同#的记录将在一起编号;order by则是指定在同一组中进行编号时是按照怎样的顺序。

示例(SQL Server 2005或以上适用):

select  s.[SAPCode]
      ,s.[Specifications]
      ,s.[Material]
      ,s.[UnitPrice]    
from ( 
    select SAPCode,Specifications,Material, UnitPrice,row_number() over (partition by [SAPCode] order by SAPCode,LastOperateDatetime DESC) as group_idx  
    from [OASystem].[dbo].[SPWMS_SpareParts] 
) s
where s.group_idx = 1) as b

这里写图片描述

问题瞬间解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值