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])
您不能将 SUM
与 OVER
和 Partition 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])
导致此错误的原因是什么?
在 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
和 Partition 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])