程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 在SQL Server2005/2008中對記錄進行分組,並獲得每組前N條記錄

在SQL Server2005/2008中對記錄進行分組,並獲得每組前N條記錄

編輯:關於SqlServer

假設有一個表,SQL語句如下:
 

CREATE TABLE [dbo].[scan](
    [km] [int] NULL,
    [kh] [int] NULL,
    [cj] [int] NULL
) ON [PRIMARY]


    其中km為科目號、kh為考生號、cj為成績,現對km和kh進行分組,並獲得每組前2條記錄(按cj從高到低排序)。基本思想是為每組加一個序號列,再用where取序號小於等於2的。SQL語句如下:
 

select * from 
(
    select a.km,a.kh,cj,row_number() over(partition by a.km order by a.km,a.cj desc) n
    from 
        (select km,kh,SUM(cj) cj from scan group by km,kh) a 
) b where n<=2 order by km, cj desc


最後得到的結果集如下圖所示。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved