У меня есть запрос, подобный следующему
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
Мне нужно GROUP BY
только ATTR1
, чтобы вычислить правильное TOTAL_QTY
, но единственная причина, по которой я группирую другие атрибуты, потому что Oracle требует, чтобы еслиПредложение GROUP BY
присутствует, тогда все атрибуты SELECT
должны быть также в предложении GROUP BY
.
Это означает, что каждый раз, когда мне нужен атрибут в этом запросе из Table_A, мне нужно поместить его в GROUP BY
тоже.Это не только выглядит некрасиво, но может оказать влияние на производительность и, возможно, непредвиденный побочный эффект.
Как переписать указанный выше запрос для вычисления TOTAL_QTY
в каждой группе ATTR1
без выражения GROUP BY