不能使用 MIN、MAX 等 SQL Server 2012

Can't use MIN, MAX etc. SQL Server 2012

我有这样的疑问:

 select 
      FirstName, LastName, BirthDate,
      GETDATE() AS [Today],
      CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) AS [Age]
FROM
      Employees
WHERE CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) >=55
ORDER BY LastName ASC

我想找到最大、最小和平均年龄,我认为我可以做到这一点,但显然我做不到。如何进行这项工作?

 select 
     FirstName, LastName, BirthDate,
     GETDATE() AS [Today],
     CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) AS [Age],
     MIN (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT)
FROM
     Employees
WHERE 
     CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) >=55
ORDER BY 
     LastName ASC

错误:

Msg 195, Level 15, State 10, Line 5
'MIN' is not a recognized built-in function name.

select FirstName
     , LastName
     , BirthDate
     , GETDATE() AS [Today]
     , CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) AS [Age]
     , MIN (CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT))
FROM  Employees
GROUP BY FirstName
     , LastName
     , BirthDate
     , CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) 
HAVING CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) >=55
ORDER BY LastName ASC

对@MAli 的回答进行了一些编辑。您不需要 GROUP BY 子句中的 GETDATE(),并且按您获得 MIN 的相同值进行分组只会给您相同的值。这应该是您的查询:

SELECT FirstName,LastName,BirthDate,Today,Age,
       MIN(Age) OVER ()
FROM (
    select FirstName
         , LastName
         , BirthDate
         , GETDATE() AS [Today]
         , CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) AS [Age]
    FROM  Employees
    GROUP BY FirstName
         , LastName
         , BirthDate 
    HAVING CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT) >=55
    ) AS A
ORDER BY LastName ASC

这是我找到的解决方案。感谢大家的帮助!

SELECT
       MAX (CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT)) AS [The Biggest Age]
     , MIN (CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT)) AS [The Smallest Age]
     , AVG (CAST (DATEDIFF (DD, BirthDate, GETDATE())/365.25 AS INT)) AS [The Average Age]
FROM
      Employees