要按固定行数返回并忽略顶行的分组选择SQL Server,可以使用ROW_NUMBER()函数和CTE(通用表达式)来实现。下面是一个示例解决方案。
假设我们有一个名为orders的表,其中包含以下列:order_id, customer_id和order_date。我们想按customer_id分组,并按order_date降序排序每个分组的前5个行。以下是解决方案的代码示例:
WITH CTE AS (
SELECT order_id, customer_id, order_date,
ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY order_date DESC) AS row_num
FROM orders
)
SELECT order_id, customer_id, order_date
FROM CTE
WHERE row_num <= 5
ORDER BY customer_id, order_date DESC;
在上述代码中,我们使用ROW_NUMBER()函数为每个customer_id分组的行分配行号。然后,我们使用CTE将查询的结果集命名为CTE,以便在后续查询中引用它。
最后,我们在CTE的结果集中选择row_num小于或等于5的行,以获取每个分组的前5个行。我们还按customer_id进行升序排序,并按order_date降序排序。
请注意,如果要返回的行数不是固定的,而是根据输入参数或其他条件动态确定的,则可以修改WHERE子句中的条件。
上一篇:按固定日期范围汇总R数据