没有分组依据的 SQL 最大值



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

我有这个:

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
我不

相信你。 下面是一个 db<>fiddle,它显示了示例数据中日期的三种不同解释:

  • 作为字符串
  • 作为月/日/年
  • 作为日/月/年

它们都产生相同的结果。

我怀疑您的实际数据更复杂,并且您过度简化了问题的示例。 此外,我怀疑日期列存储为字符串而不是日期

作为字符串,您可能有一些影响排序的隐藏字符(如前导空格(。

如果是这种情况,请修复数据类型,您的代码将起作用。

这取决于您使用的数据库系统。

在Microsoft SQL 服务器中,您可以使用 row_number(( 函数:

选择前 1 个 *从事实出发按 ROW_NUMBER(( 排序(按日期键排序(

你能试试这个吗?

select Top 1 ID,Date, country from table where date = max(date)

首先在[Date]列中设置DATE or DATETIME数据类型然后尝试以下代码:

SELECT TOP 1 ID, [Date] , country FROM TableName ORDER BY Date DESC
SELECT ID,Date,Country from TableName Where Date = MAX(Date) AND Rownum <= 1 

最新更新