SQL-在别名上按Max()排序

时间:2019-04-09 22:36:43

标签: sql sql-server tsql aggregate-functions

我发现我无法在sql查询的select语句中获得某些别名的MAX()吗?

示例:

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)上,我是否必须最终在SELECT语句中使用相同的代码完成一个Max?

2 个答案:

答案 0 :(得分:4)

您应该能够使用别名。

尝试:

  

按天订购

Max(dayslong)将返回您选择的表中的单个最大值,因此您无法按此顺序进行排序。

答案 1 :(得分:1)

如果您希望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;

我更改了日期比较,因此整整是一整天。如果您真的想在午夜之前几秒钟,那么可以改回您的版本。