您的位置:首页 > 数据库

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

2015-09-22 20:02 309 查看
=================================版权声明=================================

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

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

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

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

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

本文链接:/article/5266603.html

耻辱墙:/article/5266550.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(),'11111111','1cccccccccc')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'11111111','1eeeeeeeeee')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'11111111','1bbbbbbbbbb')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'11111111','1dddddddddd')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'11111111','1aaaaaaaaaa')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'22222222','2aaaaaaaaaa')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'22222222','2cccccccccc')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'22222222','2eeeeeeeeee')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'22222222','2dddddddddd')
WAITFOR DELAY '00:00:01'
INSERT INTO t_Test VALUES(GETDATE(),'22222222','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群里有人问问题,就随手写了一个。

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

所以只能对广大伸手党说一句,我真心希望你们都能看看《你的知识需要管理 田志刚》这本书。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: