SQL max без группировки по - PullRequest
0 голосов
/ 05 июня 2019

Я бы хотел получить одну строку с максимальной датой.Я не могу использовать group by, так как мне нужно получить все данные в этой строке.

У меня есть это:

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

Ответы [ 4 ]

1 голос
/ 05 июня 2019

Я тебе не верю. Здесь - это дБ <> скрипка, которая показывает три различные интерпретации даты в ваших данных выборки:

  • в виде строки
  • в виде мм / дд / гггг
  • как дд / мм / гггг

Все три из них дают одинаковый результат.

Я подозреваю, что ваши фактические данные более сложны, и вы слишком упростилипример для вопроса.Кроме того, я подозреваю, что столбец даты хранится в виде строки , а не date .

В виде строки могут быть некоторые скрытые символы, которые влияют насортировка (например, начальные пробелы).

В этом случае исправьте тип данных, и ваш код будет работать.

0 голосов
/ 05 июня 2019

Сначала установите тип данных DATE or DATETIME в столбце [Date], затем попробуйте этот код:

SELECT TOP 1 ID, [Date] , country FROM TableName ORDER BY Date DESC
0 голосов
/ 05 июня 2019

Это зависит от того, какую систему БД вы используете.

На сервере Microsoft SQL вы можете использовать функцию row_number ():

select top 1 *
from facts
order by ROW_NUMBER() over (order by dateKey)
0 голосов
/ 05 июня 2019

Можете ли вы попробовать это?

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