我有如下查询
SELECT a.*, b.*
(SELECT ATTR1, ATTR2, sum(QUANTITY) AS TOTAL_QTY,
ATTR3 FROM TABLE_A
WHERE ATTR4 > 0
GROUP BY ATTR1, ATTR2, ATTR3) a,
TABLE_B b
WHERE a.ATTR1 = b.ATTR1
AND a.ATTR2 = b.ATTR2
Run Code Online (Sandbox Code Playgroud)
我GROUP BY
只ATTR1
需要计算正确的TOTAL_QTY
,但唯一的原因是我将其他属性分组,因为Oracle要求if GROUP BY
子句存在,那么所有SELECT
属性也应该在GROUP BY
子句中.
这意味着每次我需要Table_A中的此查询中的属性时,我也需要将其放入GROUP BY
.这不仅看起来很丑陋,而且可能会产生性能影响,也许会产生不可预见的副作用.
如何TOTAL_QTY
在ATTR1
没有GROUP BY
子句的情况下重写上面的查询来计算每个组?