我目前正在建立一个网站,人们可以在此下订单,因此有点像在线商店。 我想创建一个视图,可以在其中轻松查看哪些用户在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天)。
那我可以在哪里放置这种条件以获得预期的结果?
答案 0 :(得分:4)
使用having
而不是where
检查汇总条件
GROUP BY ...
HAVING MAX(dbo.Orders.OrderDate) < DATEADD(day, -90, GETDATE())
答案 1 :(得分:1)
请尝试使用Haveing子句