gpt4 book ai didi

sql - MSSQL 通过 ID 从多列中获取最大值

转载 作者:行者123 更新时间:2023-12-03 02:43:20 26 4
gpt4 key购买 nike

我见过很多类似的帖子,但没有发现具体的内容。

这是我的示例数据:

ID      CID     NARID   NATID       NADate      EID     AEDate
1 1655 1 4 12/1/12 202 6/4/14 11:37:01
2 1655 1 7 12/1/12 202 6/4/14 11:37:12
5 1655 2 65 1/13/14 587 6/4/14 11:37:00
29 3165 1 6 4/15/14 7 6/4/14 11:37:00
300 3165 1 6 6/30/14 7 6/4/14 11:33:50
295 3165 2 64 6/11/14 7 6/4/14 11:37:00
302 3165 2 63 7/24/14 7 6/4/14 11:41:24
303 3165 2 67 7/24/14 7 6/4/14 15:59:06

我首先希望获得每个 CID 和 NARID 的最大 NADate:

ID      CID     NARID   NATID       NADate      EID     AEDate
1 1655 1 4 12/1/12 202 6/4/14 11:37:01
2 1655 1 7 12/1/12 202 6/4/14 11:37:12
5 1655 2 65 1/13/14 587 6/4/14 11:37:00
300 3165 1 6 6/30/14 7 6/4/14 11:33:50
302 3165 2 63 7/24/14 7 6/4/14 11:41:24
303 3165 2 67 7/24/14 7 6/4/14 15:59:06

然后从这些结果中获取具有最大 AEDate 的记录(以及所有其他相应字段):

ID      CID     NARID   NATID       NADate      EID     AEDate
2 1655 1 7 12/1/12 202 6/4/14 11:37:12
5 1655 2 65 1/13/14 587 6/4/14 11:37:00
300 3165 1 6 6/30/14 7 6/4/14 11:33:50
303 3165 2 67 7/24/14 7 6/4/14 15:59:06

数据库类型为MSSQL 2005。

最佳答案

我认为最简单的方法是使用dense_rank():

select t.*
from (select t.*,
dense_rank() over (partition by cid
order by nadate desc, cast(edate as date) desc
) as seqnum
from table t
) t
where seqnum = 1;

您需要cast(edate to date),因此查询将仅考虑edate的日期部分。您需要dense_rank(),以便返回最近日期的所有行。

关于sql - MSSQL 通过 ID 从多列中获取最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067505/

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