クエリは、case ステートメントがなくても機能します。CASE ステートメントを追加した後、以下のクエリに対して ORA-00979 (GROUP BY 式ではない) を取得します (GROUP BY 句に case ステートメントを追加しなかったため)。それを試した後(Group Byに追加)、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);