Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle ORA-00979 ORA-22818_Oracle_Ora 00979 - Fatal编程技术网

Oracle ORA-00979 ORA-22818

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

查询在没有case语句的情况下工作。在我添加案例陈述之后, 为下面的查询获取ORA-00979(不是GROUPBY表达式)(因为我没有将case语句添加到GROUPBY子句)。 在我尝试(添加到GROUPBY)之后,我得到了ORA-22818(这里不允许使用子查询表达式)。有什么建议吗

注意:所有左侧外部联接都指向引用表 表:d_r_o og是主DIM表

case语句用于返回特定数据条件的时间戳条件

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
和add
distinct
。这样会更简短,更容易理解。当然,也许你不是有意要把
计数(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)