Sql 为什么我在使用partition by而不是group by+partition by时会获得更多记录?

Sql 为什么我在使用partition by而不是group by+partition by时会获得更多记录?,sql,sql-server,Sql,Sql Server,作为一名新来者,我正在处理AdventureWorks2014数据库,我试图为每位客户获得最新的3份订单 select CustomerID, OrderDate from (select row_number() over(partition by CustomerID order by OrderDate desc) as rownumber, CustomerID, OrderDate

作为一名新来者,我正在处理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行。之后,我尝试在同一个查询中使用GROUPBY

   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
但是包含GROUPBY运算符的查询结果是28.575行。我检查了第一个和最后一个客户,结果都是一样的。
现在问题来了;这是什么原因造成的?为什么GROUP BY子句会减少结果中显示的总行数?哪个查询会给出真正的结果?

因为有些订单的日期相同。
您可以通过添加Count1>1来查询GROUPBY来找到它

您可以用文本而不是屏幕截图发布SQL吗?它可能有助于其他人阅读和分析。为什么不将sql作为文本发布?我猜您有一个翻倍的记录,可以使用group by删除该记录。下面是group by删除记录的原因