天天看點

SQL Server 2008 R2——分組取前幾名

版權聲明:本文為部落客原創文章 未經許可不得轉載  

請通過右側公告中的“聯系郵箱([email protected])”聯系我

未經作者授權勿用于學術性引用。

未經作者授權勿用于商業出版、商業印刷、商業引用以及其他商業用途。                   

本文不定期修正完善,為保證内容正确,建議移步原文處閱讀。                                                               <--------總有一天我要自己做一個模闆幹掉這隻洋芋

本文連結:

http://www.cnblogs.com/wlsandwho/p/4829125.html 恥辱牆: http://www.cnblogs.com/wlsandwho/p/4206472.html

=======================================================================

隻是寫個簡單的例子,不要在意星号什麼的。

SQL Server 2008 R2——分組取前幾名

1 USE tempdb
 2 
 3 IF EXISTS(SELECT * FROM sysobjects WHERE id=OBJECT_ID(N't_Test') AND OBJECTPROPERTY(id,N'IsUserTable')=1)
 4 DROP TABLE t_Test
 5 GO
 6 CREATE TABLE t_Test(
 7 OnLineDate    DATETIME,
 8 ProductID    NVARCHAR(8),
 9 WebPage        NVARCHAR(32)
10 )
11 GO
12 INSERT INTO t_Test VALUES(GETDATE(),'11111111','1cccccccccc')
13 WAITFOR DELAY '00:00:01'
14 INSERT INTO t_Test VALUES(GETDATE(),'11111111','1eeeeeeeeee')
15 WAITFOR DELAY '00:00:01'
16 INSERT INTO t_Test VALUES(GETDATE(),'11111111','1bbbbbbbbbb')
17 WAITFOR DELAY '00:00:01'
18 INSERT INTO t_Test VALUES(GETDATE(),'11111111','1dddddddddd')
19 WAITFOR DELAY '00:00:01'
20 INSERT INTO t_Test VALUES(GETDATE(),'11111111','1aaaaaaaaaa')
21 WAITFOR DELAY '00:00:01'
22 INSERT INTO t_Test VALUES(GETDATE(),'22222222','2aaaaaaaaaa')
23 WAITFOR DELAY '00:00:01'
24 INSERT INTO t_Test VALUES(GETDATE(),'22222222','2cccccccccc')
25 WAITFOR DELAY '00:00:01'
26 INSERT INTO t_Test VALUES(GETDATE(),'22222222','2eeeeeeeeee')
27 WAITFOR DELAY '00:00:01'
28 INSERT INTO t_Test VALUES(GETDATE(),'22222222','2dddddddddd')
29 WAITFOR DELAY '00:00:01'
30 INSERT INTO t_Test VALUES(GETDATE(),'22222222','2bbbbbbbbbb')
31 GO
32 
33 SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test 
34 GO
35 -----------------------------
36 WITH t_Temp
37 AS
38 (
39 SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test 
40 )
41 SELECT * FROM t_Temp
42 WHERE t_Temp.rowRum<=3
43 GO
44 -----------------------------
45 WITH t_Temp
46 AS
47 (
48 SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test 
49 )
50 SELECT * FROM t_Temp
51 WHERE t_Temp.rowRum<=3 ORDER BY ProductID ASC,OnLineDate DESC
52 GO      
SQL Server 2008 R2——分組取前幾名

最近沒什麼好寫的,QQ群裡有人問問題,就随手寫了一個。

然而那人拿了之後就再也沒有反應/回報了。

是以隻能對廣大伸手黨說一句,我真心希望你們都能看看《你的知識需要管理 田志剛》這本書。