我在下面的查询中得到一个ORA-00937(不是按函数分组的单个组(。有什么想法吗?查询只是将SUM除以Count。
SELECT sum(DISTINCT CE.USD_NOTIONAL)/(SELECT COUNT(DISTINCT MARKET_DATE) FROM DATA_EURO_YTD WHERE MARKET_DATE >= TO_DATE('2019-01-01','YYYY-MM-DD'))
FROM CE
WHERE CE.tradedate >= '01-JAN-2019'
AND CE.exchange IN (SELECT DISTINCT EXCHANGE FROM exchange EX
WHERE EX.FEED IN ('Y'))
将子查询移动到FROM
子句:
SELECT SUM(DISTINCT CE.USD_NOTIONAL) / MAX(dey.cntd)
FROM CE CROSS JOIN
(SELECT COUNT(DISTINCT MARKET_DATE) as cntd
FROM DATA_EURO_YTD
WHERE MARKET_DATE >= DATE '2019-01-01'
) dey
WHERE CE.tradedate >= DATE '2019-01-01' AND
CE.exchange IN (SELECT EXCHANGE
FROM exchange EX
WHERE EX.FEED IN ('Y')
);
注:
- 将子查询移到
FROM
子句几乎解决了整个问题。您仍然需要围绕该值进行聚合 - CCD_ 3在CCD_ 4子查询中是冗余的
- 我将日期固定为使用日期文字的
DATE
前缀