partition over 子句中的错误 "Incorrect syntax near 'order'"

Error "Incorrect syntax near 'order'" in partition over clause

导致此错误的原因是什么?

SQL Server 2005 中,我收到错误 'order' 附近的语法错误。我已将错误隔离到 OVER clause(当我删除 'over' 子句中的 'order by' 时错误消失)。我查看了文档并搜索了解决方案,但找不到问题所在。

SELECT bill.[cust_id], MONTH(bill.[del_date]), YEAR(bill.[del_date]),
   SUM(SUM(ISNULL(bill.[sum_count], 0))) OVER (PARTITION BY bill.[cust_id]
   ORDER BY YEAR(bill.[del_date]), MONTH(bill.[del_date])) AS QtyProcessed
FROM EnvelopeBilling bill
WHERE bill.[cust_id] = 1721
  AND bill.[del_date] BETWEEN '5/1/2015' AND '10/31/2015'
GROUP BY bill.[cust_id], MONTH(bill.[del_date]), YEAR(bill.[del_date])
ORDER BY bill.[cust_id], YEAR(bill.[del_date]), MONTH(bill.[del_date])

您不能将 SUMOVERPartition by..Orderby 一起使用,只能与 PARTITION BY 一起使用。点你想加的东西是没有意义的。

SELECT bill.[cust_id], 
       Month(bill.[del_date]), 
       Year(bill.[del_date]), 
       Sum(Sum(Isnull(bill.[sum_count], 0))) 
         OVER (partition BY bill.[cust_id]) AS QtyProcessed 
FROM   envelopebilling bill 
WHERE  bill.[cust_id] = 1721 
       AND bill.[del_date] BETWEEN '5/1/2015' AND '10/31/2015' 
GROUP  BY bill.[cust_id], 
          Month(bill.[del_date]), 
          Year(bill.[del_date]) 
ORDER  BY bill.[cust_id], 
          Year(bill.[del_date]), 
          Month(bill.[del_date]) 

如果 'partition by' 与 'group by' 相同,您应该可以通过

删除分区
SELECT bill.[cust_id] , MONTH(bill.[del_date]), YEAR(bill.[del_date]),
       SUM(ISNULL(bill.[sum_count], 0)) AS QtyProcessed
  FROM EnvelopeBilling bill
 WHERE bill.[cust_id]= 1721
   AND bill.[del_date] BETWEEN '5/1/2015' AND '10/31/2015'
 GROUP BY bill.[cust_id], YEAR(bill.[del_date]), MONTH(bill.[del_date])
 ORDER BY bill.[cust_id], YEAR(bill.[del_date]), MONTH(bill.[del_date])