SQL - порядок по Max () на псевдоним - PullRequest
3 голосов
/ 10 апреля 2019

Я понимаю, что не могу получить MAX () для некоторого псевдонима, который у меня есть в операторе select в 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?

Ответы [ 2 ]

4 голосов
/ 10 апреля 2019

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

Попытка:

ЗАКАЗАТЬ ДО ДНЯ

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

1 голос
/ 10 апреля 2019

Если вы хотите, чтобы 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;

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

...