不带分组依据的SQL max

时间:2019-06-05 11:32:55

标签: sql group-by max oracle-sqldeveloper

我想获得最长日期的一行。我无法使用分组依据,因为我需要检索该行中的所有数据。

我有这个:

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

5 个答案:

答案 0 :(得分:1)

我不相信你。 Here是db <>小提琴,它显示了示例数据中日期的三种不同解释:

  • 作为字符串
  • 为mm / dd / yyyy
  • 为dd / mm / yyyy

他们三个都产生相同的结果。

我怀疑您的实际数据更加复杂,并且您简化了该问题的示例。此外,我怀疑日期列存储为 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