使用分组依据将条件添加到联接视图中

时间:2019-07-31 05:59:17

标签: sql sql-server

我目前正在建立一个网站,人们可以在此下订单,因此有点像在线商店。 我想创建一个视图,可以在其中轻松查看哪些用户在90天内未下订单。

为此,我创建了此MS SQL视图:

SELECT
    dbo.AspNetUsers.Id,
    dbo.AspNetUsers.FirstName,
    dbo.AspNetUsers.LastName,
    dbo.AspNetUsers.Email,
    dbo.AspNetUsers.Street,
    dbo.AspNetUsers.SignupDate,
    MAX(dbo.Orders.OrderDate) AS OrderDate 
FROM
    dbo.AspNetUsers 
INNER JOIN
    dbo.Orders 
        ON dbo.AspNetUsers.Id = dbo.Orders.OrderUserId 
GROUP BY
    dbo.AspNetUsers.Id,
    dbo.AspNetUsers.FirstName,
    dbo.AspNetUsers.LastName,
    dbo.AspNetUsers.Email,
    dbo.AspNetUsers.Street,
    dbo.AspNetUsers.SignupDate

现在,这段代码仍然缺少检查日期是否超过90天的where条件。 WHERE dbo.Orders.OrderDate < DATEADD(day, -90, GETDATE())。我尝试在分组依据之前添加它,但是这不起作用(它应该只检查最近的订单是否早于90天,这将检查是否有任何订单日期早于90天)。

那我可以在哪里放置这种条件以获得预期的结果?

2 个答案:

答案 0 :(得分:4)

使用having而不是where检查汇总条件

GROUP BY ...
HAVING MAX(dbo.Orders.OrderDate) < DATEADD(day, -90, GETDATE())

答案 1 :(得分:1)

请尝试使用Haveing子句