首页 > 解决方案 > 分区总和不起作用

问题描述

我有一些带有分区功能的代码,但它不起作用。

我收到一条错误消息,上面写着

“销售”附近的语法不正确

有谁知道为什么?我查看了其他分区问题,没有找到答案,

代码(如下)应该从 Aggregated Sales History 表中选择 PriceZoneID 和 Sales,然后使用 OVER 函数汇总总销售额并将该数据放入一个名为 Total Sales 的新列中。

然后它应该在一个名为 TotalSalesByZone 的新列中使用 OVER (PARTITION) 表达式汇总每个区域的销售额,然后按价格区域 ID 和销售额对数据进行排序

Select PriceZoneID, 
    Sales,
SUM(Sales) OVER () AS Total Sales, 
SUM(Sales) OVER (PARTITION BY PriceZoneID) AS TotalSalesByZone
From AggregatedSalesHistory
ORDER BY PriceZoneID AND Sales; 

(分区依据将结果划分为分区,例如区域)

如果您可以发布带有正确答案的代码,将不胜感激!

标签: sqlsql-serverwindow-functions

解决方案


现在从评论中出来,因为纠正那里的错误有点愚蠢。您的代码中有 1 个印刷错误和 1 个语法错误:

Select PriceZoneID, 
       Sales,
       SUM(Sales) OVER () AS Total Sales, --There's a space in the alias
       SUM(Sales) OVER (PARTITION BY PriceZoneID) AS TotalSalesByZone
FROM AggregatedSalesHistory
ORDER BY PriceZoneID AND Sales; --AND is not valid in an ORDER BY clause

正确的查询是:

Select PriceZoneID, 
       Sales,
       SUM(Sales) OVER () AS TotalSales, --Removed Space
       SUM(Sales) OVER (PARTITION BY PriceZoneID) AS TotalSalesByZone
FROM AggregatedSalesHistory
ORDER BY PriceZoneID, Sales; --Comma delimited

推荐阅读