SQL Server 2008 R2——分组取前几名

时间:2024-08-03 23:37:50

=================================版权声明=================================

版权声明:本文为博主原创文章 未经许可不得转载 

请通过右侧公告中的“联系邮箱(wlsandwho@foxmail.com)”联系我

未经作者授权勿用于学术性引用。

未经作者授权勿用于商业出版、商业印刷、商业引用以及其他商业用途。                

本文不定期修正完善,为保证内容正确,建议移步原文处阅读。                                                               <--------总有一天我要自己做一个模板干掉这只土豆

本文链接:http://www.cnblogs.com/wlsandwho/p/4829125.html

耻辱墙:http://www.cnblogs.com/wlsandwho/p/4206472.html

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

只是写个简单的例子,不要在意星号什么的。

 USE tempdb

 IF EXISTS(SELECT * FROM sysobjects WHERE id=OBJECT_ID(N't_Test') AND OBJECTPROPERTY(id,N'IsUserTable')=1)
DROP TABLE t_Test
GO
CREATE TABLE t_Test(
OnLineDate DATETIME,
ProductID NVARCHAR(8),
WebPage NVARCHAR(32)
)
GO
INSERT INTO t_Test VALUES(GETDATE(),'','1cccccccccc')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','1eeeeeeeeee')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','1bbbbbbbbbb')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','1dddddddddd')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','1aaaaaaaaaa')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','2aaaaaaaaaa')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','2cccccccccc')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','2eeeeeeeeee')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','2dddddddddd')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'','2bbbbbbbbbb')
GO SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test
GO
-----------------------------
WITH t_Temp
AS
(
SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test
)
SELECT * FROM t_Temp
WHERE t_Temp.rowRum<=3
GO
-----------------------------
WITH t_Temp
AS
(
SELECT OnLineDate,ProductID,WebPage,ROW_NUMBER() OVER(PARTITION BY ProductID ORDER BY OnLineDate DESC) AS rowRum FROM t_Test
)
SELECT * FROM t_Temp
WHERE t_Temp.rowRum<=3 ORDER BY ProductID ASC,OnLineDate DESC
GO

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

最近没什么好写的,QQ群里有人问问题,就随手写了一个。

然而那人拿了之后就再也没有反应/反馈了。

所以只能对广大伸手党说一句,我真心希望你们都能看看《你的知识需要管理 田志刚》这本书。