我想获得最长日期的一行。我无法使用分组依据,因为我需要检索该行中的所有数据。
我有这个:
ID Date Country
1 05/05/2019 US
2 05/06/2019 UK
我想要这个:
ID Date Country
2 05/06/2019 UK
我已经尝试了以下方法,但对我而言不起作用
select TOP 1 ID, Date, country
from table
order by Date desc
答案 0 :(得分:1)
我不相信你。 Here是db <>小提琴,它显示了示例数据中日期的三种不同解释:
他们三个都产生相同的结果。
我怀疑您的实际数据更加复杂,并且您简化了该问题的示例。此外,我怀疑日期列存储为 string 而不是 date 。
作为字符串,您可能会有一些影响排序的隐藏字符(例如前导空格)。
在这种情况下,请修复数据类型,您的代码将可用。
答案 1 :(得分:0)
你可以试试吗?
select Top 1 ID,Date, country from table where date = max(date)
答案 2 :(得分:0)
这取决于您使用的数据库系统。
在Microsoft SQL Server中,可以使用row_number()函数:
select top 1 * from facts order by ROW_NUMBER() over (order by dateKey)
答案 3 :(得分:0)
首先在DATE or DATETIME
列中设置[Date]
数据类型
然后尝试以下代码:
SELECT TOP 1 ID, [Date] , country FROM TableName ORDER BY Date DESC
答案 4 :(得分:0)
SELECT ID,Date,Country from TableName Where Date = MAX(Date) AND Rownum <= 1