gpt4 book ai didi

sql - 如何在 SQL Server 2008 中获取每组的第一条和最后一条记录?

转载 作者:行者123 更新时间:2023-12-02 12:08:57 25 4
gpt4 key购买 nike

如何制作 select 来将每组行的第一行和最后一行通过 GROUP BY 进行分组。

我的表格包含以下数据:

id  group   val   start   end
1 10 36 465 89
2 10 35 55 11
3 10 34 20 456
4 20 38 1140 1177
5 20 22 566 788
6 20 1235 789 4796
7 20 7894 741 1067

我需要获取的是列开始的第一个值和列结束的最后一个值,并按组列进行分组。

结果表应如下所示:

   id  group   val   start   end
1 10 36 465 89
3 10 34 20 456
4 20 38 1140 1177
7 20 7894 741 1067

我进行了查询,但使用了 FIRST_VALUELAST_VALUE 以及 over (partition by)。它在 SQL Server 2012 中工作,但在 SQL Server 2008 中不起作用。我需要一个可以在 SQL Server 2008 中执行的查询。

最佳答案

使用ROW_NUMBER怎么样:

SQL Fiddle

WITH Cte AS(
SELECT *,
RnAsc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val),
RnDesc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val DESC)
FROM tbl
)
SELECT
id, [group], val, start, [end]
FROM Cte
WHERE
RnAsc = 1 OR RnDesc = 1
ORDER BY [group], val

关于sql - 如何在 SQL Server 2008 中获取每组的第一条和最后一条记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31128202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com