我在 select 中创建了一个专栏;我如何在何处使用它?

I created a column in the select; how do i use it in the where?

我在 select 语句 (DaysSinceCheck) 中创建了一个列。

如何在我的 WHERE 子句中使用它?

SELECT DISTINCT
    Name,
    (DATEDIFF(D, max(lastDaTe), GETDATE())) AS DaysSinceCheck
FROM  
    event_table
WHERE
    cust = 'usa'
    AND ((DATEDIFF(D, max(lastDaTe), GETDATE()))) <= 2
GROUP BY 
    Name

收到错误:

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.

您使用 HAVING 子句测试聚合函数的值。

...
WHERE cust = 'usa'
GROUP BY Name
HAVING ((DATEDIFF(D, max(lastDaTe), GETDATE()))) <= 2

HAVING 解决方案工作正常...另一种方法是使用 CTE 将事情分成两部分,如下所示:

WITH NameAndDays AS (
    SELECT DISTINCT Name,
           (DATEDIFF(D, max(lastDaTe), GETDATE())) AS DaysSinceCHECK
      FROM event_table
     WHERE cust = 'usa'
     GROUP BY Name
) SELECT * 
    FROM NameAndDays
   WHERE DaysSinceCHECK <= 2