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

一個訂單在定點桿日志表中有多條記錄,要根據時間查詢出每一個訂單的前三條日志記錄,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做排序,然后再自關聯一下本身的表,根據主鍵關聯,然后對結果集做分組和排序,這樣就能保證同一個訂單的三條記錄都排在一起
這種查詢方法適用於表中有唯一性標識的字段,如果沒有唯一性標識的字段就不能這么查了。
