sqlsever根據某個字段分組后獲取到最新數據


SELECT  *
FROM    ( SELECT    * ,
                    ROW_NUMBER() OVER ( PARTITION BY title ORDER BY creat_time DESC ) AS count
          FROM      drug_activity
        ) a
WHERE   a.count = 1
ORDER BY a.creat_time DESC

關鍵字解釋:

  1. row_number() over():sqlsever中實現分組排序的關鍵字

  2. partition by title order by creat_time desc:先通過title分組再通過creat_time排序(查出來的數據條數沒有變化,只是顯示順序發生了變化)

  3. 查詢出來的結果集中會多一個count字段,這個字段就是將分組后的數據按照我們的排序規則排列后顯示的序號,因為我們用的倒序排序,所以分組后的每組數據的第一條就是我們要的最新數據,然后只需要取count字段等於1的數據,就是我們需要的結果集了

  4. a.count=1 ORDER BY a.creat_time desc:獲取每一組中的第一條並且通過 creat_time字段排序


免責聲明!

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



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