SQL — порядок по Max () по псевдониму

Я так понимаю, что я не могу получить MAX() для некоторого псевдонима, который у меня есть в операторе выбора в запросах sql?

Пример:

Select  
    CASE WHEN CompletionDate IS NOT NULL THEN DATEDIFF(d, CreatedDate, CompletionDate) ELSE NULL END AS DaysLong
from CombinedMastervw 
WHERE CreatedDate Between '03/01/2019 23:59:59.991' AND '04/01/2019 23:59:59.991'
ORDER BY MAX(dayslong)

Таким образом, мой вопрос касается MAX(dayslong), должен ли я в конечном итоге сделать Max с тем же кодом в выражении SELECT?

Образцы данных и желаемые результаты помогут.

Gordon Linoff 10.04.2019 00:43

Это действительно не имеет смысла. Вам нужно максимальное значение или вы хотите заказать все строки? Я предполагаю, что вы хотите заказать по убыванию дней (так что сначала самое высокое значение)?

Ben 10.04.2019 00:43

Что вообще означает ORDER BY MAX(dayslong)?

Eric 10.04.2019 00:46

Мне даже не нужен Макс… я что-то не так делал

user10189172 10.04.2019 00:53
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
3
4
202
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Если вы хотите max(), используйте top (1) и order by:

Select TOP (1) DATEDIFF(day, CreatedDate, CompletionDate)  DaysLong
from CombinedMastervw 
WHERE CreatedDate >= '2019-03-01' AND
      CreatedDate < '2019-04-02'
ORDER BY dayslong DESC;

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

Хорошо, круто, но если я хочу больше одного результата, то как мне это сделать?

user10189172 10.04.2019 00:50

@ЧадДжейкобс. . . Просто уберите TOP (1). Использование MAX() предполагает, что вам нужен один результат.

Gordon Linoff 10.04.2019 00:59
Ответ принят как подходящий

Вы должны иметь возможность использовать псевдоним.

Пытаться:

ORDER BY dayslong

Max(dayslong) вернет единственное максимальное значение в выбранной вами таблице, поэтому вы не можете упорядочить его.

Другие вопросы по теме