SQL實現分組查詢取前幾條記錄


我要實現的功能是統計訂單日志表中每一個訂單的前三條日志記錄,表結構如下:

一個訂單在定點桿日志表中有多條記錄,要根據時間查詢出每一個訂單的前三條日志記錄,sql如下:

 select b.OrderNumber,b.creationtime,b.remark  FROM 
 (
    SELECT a.OrderNumber,a.CreationTime,a.Remark 
    FROM [FortuneLabFord].[dbo].[SO_Log] a
    where a.SysId   IN
        (
         select TOP 3 SysId  from [FortuneLabFord].[dbo].[SO_Log] 
         where a.OrderNumber = SO_Log.OrderNumber ORDER BY a.CreationTime DESC
        )
) b  
group BY b.OrderNumber,b.creationtime,b.remark
ORDER BY b.OrderNumber 

思路是:先在內層根據CreationTime做排序,然后再自關聯一下本身的表,根據主鍵關聯,然后對結果集做分組和排序,這樣就能保證同一個訂單的三條記錄都排在一起

這種查詢方法適用於表中有唯一性標識的字段,如果沒有唯一性標識的字段就不能這么查了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM