【发布时间】:2016-02-11 15:17:06
【问题描述】:
是什么导致了这个错误?
在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])
【问题讨论】:
-
SUM() OVER ()没有订单...(1+2) == (2+1) -
您不能将
SUM与OVER和Partition by..Orderby一起使用,只能与PARTITION BY一起使用。 -
他可以在sql servr 2012+中使用sum和ordering
-
当我删除订单时,我得到的是请求时间段内所有月份的总和,而不是每个月的总和。我如何获得每个月的小计? (我被 2005 年困住了)
-
我删除了订单,并添加了年份和月份作为分区的一部分,它起作用了。 "PARTITION BY bill.cust_id, YEAR(bill.del_date), MONTH(bill.del_date)"
标签: tsql sql-server-2005