作为新手,我正在使用AdventureWorks2014数据库,我正在努力获得每个客户的最新3个订单"。
select CustomerID,
OrderDate from
(select row_number() over(partition by CustomerID
order by OrderDate desc) as rownumber,
CustomerID,
OrderDate
from sales.SalesOrderHeader) as x
where rownumber <=3
此查询结果为28.586行。之后我尝试在同一查询中使用group by。
select CustomerID,
OrderDate from
(select row_number() over(partition by CustomerID order by
OrderDate desc) as rownumber,
CustomerID,
OrderDate
from sales.SalesOrderHeader) as x
where rownumber <=3
GROUP BY CustomerID,OrderDate
但是包含GROUP BY运算符的查询结果为28.575行。我检查了第一个和最后一个客户,它们都是一样的。 现在问题是这样的;是什么造成的?为什么GROUP BY子句减少了结果中显示的总行数?哪个查询给出了真实结果?
答案 0 :(得分:1)
因为某些订单的日期相同
您可以通过添加HAVING Count(1) > 1
来查找Group By