gpt4 book ai didi

sql-server - SQL Server + 选择所有不同记录中的前 1 条记录

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

我正在努力编写一个查询来生成以下记录。

我有一个表,记录为

c1  c2            c3                  c4    c5   c6

1 John 2.3.2010 12:09:54 4 7 99
2 mike 2.3.2010 13:09:59 8 6 88
3 ahmad 2.3.2010 14:09:59 1 9 19


4 Jim 23.3.2010 16:35:14 4 5 99
5 run 23.3.2010 12:09:54 3 8 12

我只想获取记录:-

3  ahmad         2.3.2010 14:09:59     1     9    19   
4 Jim 23.3.2010 16:35:14 4 5 99

我的意思是按 c3 列排序的记录和当天最新的记录。这里我有一天中不同时间的 1、2、3 条记录。我需要按日期降序排序的记录,然后只需要前 1 条记录。 4 和 5 也类似。您能帮我写一个查询吗?

最佳答案

如果您使用的是 SQL Server 2008 或 2008 R2,您可以尝试以下操作:

WITH TopPerDay AS
(
SELECT
c1, c2, c3, c4, c5, C6,
ROW_NUMBER() OVER
(PARTITION BY CAST(c3 AS DATE) ORDER BY c3 DESC) 'RowNum'
FROM dbo.YourTable
)
SELECT *
FROM TopPerday
WHERE RowNum = 1

我基本上按天对数据进行分区(在 SQL Server 2008 及更高版本中使用 DATE 类型),并按 c3 列降序排列。这意味着,每天最旧的行将具有 RowNum = 1 - 因此我只需从公共(public)表表达式中选择这些行即可完成。

关于sql-server - SQL Server + 选择所有不同记录中的前 1 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689567/

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