我想得到一行最大日期。我无法使用分组依据,因为我需要检索该行中的所有数据。
我有这个:
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