查询无需 case 语句即可工作。在我为下面的查询添加 CASE 语句后,获取 ORA-00979(不是 GROUP BY 表达式)(因为我没有在 GROUP BY 子句中添加 case 语句)。在我尝试之后(添加到 Group By),我得到了 ORA-22818(此处不允许子查询表达式)。有什么建议么?
注意:所有左外连接都是引用表 Table: 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);