gpt4 book ai didi

SQL通过单独的列选择最大年/月

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

我需要按最大 YEAR/MONTH 值选择行并进行这个相当复杂的查询。它有效,但它不是最明智的解决方案?

Select Max(hr.HRYear) as HRYear, Max(hr.HRMonth) as HRMonth
From data hr,
(Select Max(HRYear) as HRYear From data) as atemp
Where hr.HRYear = atemp.HRYear
and hr.HRMonth = (Select Max(HRMonth) From data Where HRYear=atemp.HRYear)

示例行和预期结果是 HRYear=2014,HRMonth=10 值。键值是整数。

HRYear(int)  HRMonth(int)  Attr1(varchar)
2013 10 aa0
2013 11 aa3
2013 11 bb5
2013 12 aa2
2013 12 aa2
2014 7 cc1
2014 8 dd2
2014 10 ee3
2014 10 ee2

您知道如何选择最大年+月组合吗?我需要值来运行其他查询。

我已经接受了 Gordon 的 TOP1..ORDERBY 解决方案,但一个(现已删除)想法是这个查询。我有几百行测试,所以基准测试几乎是不可能的,但是一旦我在生产中达到了数百万行,还有待观察什么是最有效的。

SELECT fst.HRYear, Max(fst.hrmonth) as HRMonth
FROM data fst
JOIN (SELECT Max(HRYear) HRYear FROM data) scd
ON fst.HRYear = scd.HRYear
GROUP BY fst.HRYear

最佳答案

你可以使用 toptop with ties 来得到你想要的:

select top 1 with ties hr.*
from data hr
order by hr.hryear desc, hr.hrmonth desc;

如果您希望结果集仅包含一行,则可以使用 top 1 hr.*。例如,如果您只想要最近的年份和月份:

select top 1 hr.hryear, hr.hrmonth
from data hr
order by hr.hryear desc, hr.hrmonth desc;

关于SQL通过单独的列选择最大年/月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27443723/

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