我有一个别名列m
和一个sum函数。我知道我不能在顶部查询中按m
分组,因为SELECT尚未执行。我发现如果删除'm'列,我可以执行此查询,但我需要此列出现在查询中。
所以我尝试将SELECT和FROM放在查询前面。
select jobno,m,total
from (
select j.jobno,
sum(r.amtfc) total,
decode(j.consolno,null,j.shpno,j.consolno) m
from job j,
jobother jo,
revenue r,
fmparty f
where j.voidby is null
and j.unid=jo.job_unid
and j.unid=r.job_unid
and r.invdocno is null
and f.partyid=r.billing_partyid
)
group by jobno, m
但这让我回来了
“ORA-00979:不是GROUP BY表达式”
有没有人有任何建议?我是一个非常新的SQL,可以使用帮助,所以感谢先进!
答案 0 :(得分:0)
来自' ORA-00979'
您尝试执行包含GROUP BY函数的SELECT语句(即:MIN函数,MAX函数,SUM函数,COUNT函数)和SELECT列表中不在GROUP BY子句中的表达式。
我认为您的选择可能类似于
SELECT j.jobno jobno,
decode(j.consolno,null,j.shpno,j.consolno) m,
sum(r.amtfc) total
FROM job j,jobother jo,revenue r,fmparty f
WHERE j.voidby is null and j.unid=jo.job_unid and
j.unid=r.job_unid and r.invdocno is null and
f.partyid=r.billing_partyid
GROUP BY j.jobno, decode(j.consolno,null,j.shpno,j.consolno)
答案 1 :(得分:0)
首先,学习使用正确的,明确的join
语法!
您可以将查询简化为:
select j.jobno, sum(r.amtfc) as total,
coalesce(j.consolno, j.consolno) as m
from job j join
jobother jo
on j.unid = jo.job_unid join
revenue r
on j.unid = r.job_unid join
fmparty f
on f.partyid = r.billing_partyid
where j.voidby is null and r.invdocno is null
group by jobno, coalesce(j.consolno, j.consolno)