gpt4 book ai didi

sql - where子句中的用例

转载 作者:行者123 更新时间:2023-12-03 15:25:53 25 4
gpt4 key购买 nike

我正在尝试创建一个具有称为m_reaplicacao的参数的过程。该参数为"is",“N”为“否”和“T”为所有记录接收值。
当参数为"is"时,我应返回值等于9的记录。
当参数为No时,我应该返回不同于9的记录。最后,当值为All时,我应该返回表中的所有记录。
使用下面的代码,Oracle说:
PROCEDURE MYDB.CONTAS_A_PAGAR_SPS的编译错误
错误:PL/SQL:ORA-00905:缺少关键字
线:84
文字:ta.id_1a_cbr = 9;

    select * from proposta ta
where
ta.estado = 'RJ'
and case
when m_reaplicacao = 'S' then
ta.id_1a_cbr = 9;
when m_reaplicacao = 'N' then
ta.id_1a_cbr <> 9
else null
end case;

我看到了很多帖子,但是我没有解决。
有谁可以帮助我吗?

最佳答案

当您确实想要 bool 值的简单组合时,请不要在CASE子句中使用WHERE语句。

WHERE ta.estado = 'RJ'
AND ( m_reaplicacao = 'T'
OR (m_reaplicacao = 'S' AND ta.id_1a_cbr = 9)
OR (m_reaplicacao = 'N' AND ta.id_1a_cbr <> 9)
)

如果由于某种原因您确实确实想使用 CASE语句,则需要 CASE返回您在 WHERE子句中检查的值。例如
WHERE ta.estado = 'RJ'
AND (CASE WHEN m_reaplicacao = 'S' AND ta.id_1a_cbr = 9
THEN 1
WHEN m_reaplicacao = 'N' AND ta.id_1a_cbr <> 9
THEN 1
WHEN m_reaplicacao = 'T'
THEN 1
ELSE 2
END) = 1

但是,通常这不是表达这种条件的最清晰方法。

关于sql - where子句中的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24249323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com