Oracle数据库 from子查询中使用left join出结果,然后结果再进行group by统计,但是报错,求指教
在Oracle数据库会报错, MySql数据库不会报错
SELECT
c.CT,
'0',
SUM(PCOUNT),
SUM(MONEY/100)
FROM
(
SELECT
CLCT_DAY
,
CASE
WHEN CT = '100' THEN '01'
WHEN CTN = '307' THEN '02'
WHEN A.CTN=b.PARAM_KEY THEN '03'
WHEN CTN IN('502', '503') THEN '04'
WHEN CT = '1100' THEN '05'
WHEN CT = '600' THEN '06'
WHEN CT = '400' THEN '07'
WHEN CT = '500' THEN '08'
WHEN CTN = '350' THEN '09'
WHEN CTN = '35A' THEN '10'
ELSE CT
END CT,
PCOUNT,
MONEY
FROM
INFO_T A LEFT JOIN PARAM_T B
ON A.CTN=B.PARAM_KEY
WHERE
DAY = '20220117') c
GROUP BY CT;
SQL 错误 [979] [42000]: ORA-00979: 不是 GROUP BY 表达式
未想到
from后面是个结果集,然后对结果集进行group by分组统计
在select列表项中出现的列必须全部出现在group by后面(聚合函数除外)
select中把'0'去掉试试。
INFO_T 和PARAM_T 是表还是视图?这两个东西单独查会不会报错?
从你贴的这个sql上来看,是绝对没有语法问题的。
你执行报错,要么你原sql和贴出来的这个不一样,要么就是INFO_T 和PARAM_T这两个玩意中某一个是视图,而视图里sql的聚合group by 有问题