Oracle ORA-00979 ORA-22818
查询在没有case语句的情况下工作。在我添加案例陈述之后, 为下面的查询获取ORA-00979(不是GROUPBY表达式)(因为我没有将case语句添加到GROUPBY子句)。 在我尝试(添加到GROUPBY)之后,我得到了ORA-22818(这里不允许使用子查询表达式)。有什么建议吗 注意:所有左侧外部联接都指向引用表 表:d_r_o og是主DIM表 case语句用于返回特定数据条件的时间戳条件Oracle ORA-00979 ORA-22818,oracle,ora-00979,Oracle,Ora 00979,查询在没有case语句的情况下工作。在我添加案例陈述之后, 为下面的查询获取ORA-00979(不是GROUPBY表达式)(因为我没有将case语句添加到GROUPBY子句)。 在我尝试(添加到GROUPBY)之后,我得到了ORA-22818(这里不允许使用子查询表达式)。有什么建议吗 注意:所有左侧外部联接都指向引用表 表:d_r_o og是主DIM表 case语句用于返回特定数据条件的时间戳条件 select nvl(country_name,'unknown_cntry') CNTRY_N
select nvl(country_name,'unknown_cntry') CNTRY_NAME,
nvl(rs.reg_tp_nm,'rgs_stus') RG_STUS,
nvl(REBTN,'u_B_type') B_type_nm,
decode(to_char(og.TIMESTAMP, 'YYYY'),
'2015', 'CCCASE',
'CURRENT'),
count(dkey),
(CASE
WHEN PG.rite_ts <= (SELECT pssd_dt
FROM lpyr
WHERE LPYR.PGY_KEY = OG.r_Pgy_KEY)
THEN 'RECTIFIED'
ELSE 'no'
END) RCT_STUS,
FROM d_r_o og
left outer join LORSR rs
on og.key = rs.key
left outer join LRBR br
on og.key = br.key
left outer join LUST st
on og.key = st.key
group by nvl(country_name,'unknown_cntry') CNTRY_NAME,
nvl(rs.reg_tp_nm,'rgs_stus') RG_STUS,
nvl(REBTN,'u_B_type') B_type_nm,
decode(to_char(og.TIMESTAMP, 'YYYY'),
'2015', 'CCCASE',
'CURRENT'),
count(dkey);
选择nvl(国家/地区名称,'unknown'cntry')cntry\u名称,
nvl(rs.reg_tp_nm,'rgs_stus')RG_stus,
nvl(REBTN,'u_B_类型')B_类型\u nm,
解码(到字符(og.TIMESTAMP,'YYYY'),
“2015年”、“CCCASE”,
"现时",,
伯爵(dkey),
(案例
当PG.rite__针对您的ORA-22818
错误时,您应该更改此设置
when PG.rite_ts <= (SELECT pssd_dt FROM lpyr WHERE LPYR.PGY_KEY = OG.r_Pgy_KEY)
谢谢大家的意见。我可以利用你们的每一个反馈来找出答案。
我几乎将lpyr从case中删除,并将其作为另一个左外连接放到from语句中
然后,我将案例陈述替换为:
(案例
当PG.rite不知道您的模型时,您是否有理由不与所有其他表一起加入“lpyr”?然后只需比较案例陈述中的值。请编辑您的问题并包括您看到的错误消息的确切文本。谢谢。如果您按每个结果列分组,您还可以删除组by
和adddistinct
。这样会更简短,更容易理解。当然,也许你不是有意要把计数(dkey)
在group by
中,因为group by中具有聚合函数似乎会产生相反的效果。@Justin Cave.LPYR是一个定义程序年数的引用表。@Bob Jarvis-Done!谢谢。谢谢Pham X。尝试过了。没有成功。同样的错误。请想象一下,如果您注释掉整个case语句,则查询成功。
when PG.rite_ts <= (SELECT min(pssd_dt) FROM lpyr WHERE LPYR.PGY_KEY = OG.r_Pgy_KEY)