我想在一个查询中返回每个部分的前10条记录。有没有人能帮我解决这个问题呢?节是表中的一列。
数据库为SQL Server 2005。我想按输入的日期返回前10名。部分包括业务、本地和功能。对于一个特定的日期,我只需要前(10)个业务行(最近的条目)、前(10)个本地行和前(10)个特征。
发布于 2008-10-07 02:13:52
如果你使用的是SQL2005,你可以这样做...
SELECT rs.Field1,rs.Field2
FROM (
SELECT Field1,Field2, Rank()
over (Partition BY Section
ORDER BY RankCriteria DESC ) AS Rank
FROM table
) rs WHERE Rank <= 10
如果您的RankCriteria是平局的,那么您可能会返回超过10行,Matt的解决方案可能更适合您。
发布于 2012-06-25 18:16:59
在T-SQL中,我会这样做:
WITH TOPTEN AS (
SELECT *, ROW_NUMBER()
over (
PARTITION BY [group_by_field]
order by [prioritise_field]
) AS RowNo
FROM [table_name]
)
SELECT * FROM TOPTEN WHERE RowNo <= 10
发布于 2012-06-15 22:26:33
SELECT r.*
FROM
(
SELECT
r.*,
ROW_NUMBER() OVER(PARTITION BY r.[SectionID]
ORDER BY r.[DateEntered] DESC) rn
FROM [Records] r
) r
WHERE r.rn <= 10
ORDER BY r.[DateEntered] DESC
https://stackoverflow.com/questions/176964
复制相似问题