我想要编写一个查询,给出一个从包含所有表的表的case表达式中获取的表,但是我得到了一个错误"ORA- 00936表达式缺席“。
这里我的问题是:
select table_name,
case
when table_name in ('SI_CONTRAT_EVT_F','SI_CONTRAT_EVT_PU_F') then
1
else
0
end,
from rgpd_table_param
where test = 1
group by
table_name,
case
when table_name = 'SI_CONTRAT_EVT_F' then
1
else
0
end ;发布于 2022-10-11 10:47:50
获得相同结果的一个更易读的替代方法是将CASE ... END表达式移动到一个新列,然后按名称对该列进行GROUP BY。
WITH q1 AS (
SELECT
table_name,
/* CASE WHEN table_name IN ( 'SI_CONTRAT_EVT_F','SI_CONTRAT_EVT_PU_F' ) THEN 1 ELSE 0 END, -- Commented out because this column isn't used anywhere. */
CASE WHEN table_name = 'SI_CONTRAT_EVT_F' THEN 1 ELSE 0 END AS isEvtF
FROM
rgpd_table_param
WHERE
test = 1
)
SELECT
table_name,
isEvtF
FROM
q1
GROUP BY
table_name,
isEvtFhttps://stackoverflow.com/questions/74016827
复制相似问题