天天看點

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

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

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做排序,然後再自關聯一下本身的表,根據主鍵關聯,然後對結果集做分組和排序,這樣就能保證同一個訂單的三條記錄都排在一起

這種查詢方法适用于表中有唯一性辨別的字段,如果沒有唯一性辨別的字段就不能這麼查了。

如果您覺得本文對你有用,不妨幫忙點個贊,或者在評論裡給我一句贊美,小小成就都是今後繼續為大家編寫優質文章的動力!

歡迎您持續關注我的部落格:)

作者:Ken Wang

出處:http://www.cnblogs.com/Wolfmanlq/

版權所有,歡迎保留原文連結進行轉載:)