Запрос работает без утверждения кейса. После того, как я добавлю оператор CASE, Получение ORA-00979 (не выражение GROUP BY) для запроса ниже (потому что я не добавлял оператор case в предложение GROUP BY). После того, как я попробовал (добавив в группу By), я получил ORA-22818 (здесь не разрешены выражения подзапроса). Какие-либо предложения?ORA-00979 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);
Не зная свою модель, есть ли причина, по которой вы не присоединяетесь к «lpyr» со всеми остальными таблицами? Затем просто сравните значения в вашем случае. –
ИЗОБРАЖИТЕ СВОЙ КВАЛИФИКАЦИЮ и укажите точный текст сообщений об ошибках, которые вы видите. Благодарю. –
Если вы группируете каждый столбец результатов, вы можете просто удалить группу «by by» и добавить «distinct». Это было бы короче и легче понять. Конечно, возможно, вы не хотели ставить 'count (dkey)' в 'group by', потому что наличие агрегатных функций в группе кажется очень контрпродуктивным. – Andreas