当前位置: 代码迷 >> Sql Server >> sql查询近来几条不重合记录
  详细解决方案

sql查询近来几条不重合记录

热度:13   发布时间:2016-04-24 09:44:45.0
sql查询最近几条不重合记录
  字段  编号  订单号  其他
        1     111     。。
        2     111     。。
        3     111     。。
        4     222     。。
        5     222     。。
        6     222     。。
        7     333     。。
        8     333     。。
        9     444     。。
        10    444     。。
        11    555     。。
        12    555     。。
        13    666     。。
        14    666     。。
        15    777     。。
        16    777     。。
        17    888     。。
        18    888     。。

  如需要查询出最近五条记录,同时不需要重合的
  字段  编号  订单号  其他
        7     333     。。
        9     444     。。
        11    555     。。
        13    666     。。
        15    777     。。
        17    888     。。
------解决思路----------------------
select top 5 [编号],[订单号],[其它] from 
(
SELECT ROW_NUMBER()OVER(PARTITION BY [订单号] ORDER BY [编号])RN,[编号],[订单号],[其它] FROM  表
)T
WHERE
T.RN=1
ORDER BY
T.[订单号]

你参考一下,看是不是这样子
------解决思路----------------------
2樓的方法是正確的,另寫一個方法

select a.* from tablename a ,
(select top 5 订单号,min(编号) as ID from tablename group by 订单号 order by min(编号) desc) as b
where a.订单号=b.订单号 and a.编号=b.ID

------解决思路----------------------
with B as 
(
select ID,ordernumber,ROW_NUMBER() over (partition by ordernumber order by ID) as RN from A
)

select top 5 ID,ordernumber from B where RN = 1 order by ordernumber desc
------解决思路----------------------
亲测可用
with cte as (
select *,ROW_NUMBER()OVER(PARTITION BY [订单号] ORDER BY [编号]) as ID
from tabname
)
select top 5 [编号],[订单号],[其它] 
from cte
where id = 1
order by [订单号] desc
  相关解决方案