【发布时间】:2021-11-11 21:03:56
【问题描述】:
我有一个查询连接 2 个表,其中一个 SELECT 语句用于两个表中的字段,以及一个有序分析函数来计算特定客户的总量。 当我尝试对字段进行分组时,出现错误“GROUP BY 子句中不允许使用有序分析函数”。我需要 GROUP BY 因为还有其他字段需要分组,但我还需要 SUM() OVER (PARTITION BY()) 进行其他计算。如何创建子查询以消除错误?
查询是这样的:
a.cust_no,
b.cust_name,
a.location,
c.product,
SUM(a.volume),
SUM(a.weight),
SUM(volume) OVER (PARTITION BY cust_no ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS fixed_volume,
SUM(CASE WHEN a_flag = 'Y' THEN volume ELSE 0 END) OVER (PARTITION BY cust_no ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS bias_volume
FROM test_table a
JOIN test_table2 b ON a.cust_no = b.cust_no
JOIN test_table3 c ON a.cust_no = c.cust_no
GROUP BY 1,2,3,4
【问题讨论】: