【问题标题】:use select under case statement在 case 语句下使用 select
【发布时间】:2023-03-18 02:52:01
【问题描述】:

我想使用一个查询,它可以让我得到两个不同的结果 取决于过滤器。 这个我试过了,还是不行。

CASE WHEN filtre = 10
THEN
(
 select sum(s.MONTANT_CREANCE_EMP) as creances_emp  , s.ANNEE as annee from sc01_emp s
)
ELSE
(
select sum(s.NOMBRE_CREANCE) as creances_emp  , s.ANNEE as annee from sc01_emp s

)  
END

谢谢大家。

【问题讨论】:

  • 这是完整的查询吗?你缺少一个 select 和一个 from 子句
  • 我的 objectif 是:第 1 步:从过滤器中选择一个值第 2 步:如果过滤器的值等于 10,那么我想得到 sum(montant) 第 3 步:否则,如果该值不是 10 ,那么我想得到 sum(nombre)

标签: mysql sql oracle oracle11g oracle10g


【解决方案1】:

您的代码不符合case expression的正确语法

select 
CASE 
(select count(*) from dual) WHEN 1 -- this is for test, change it to <filtre> WHEN 10
THEN
(SELECT SUM (MONTANT_CREANCE_EMP) from sc01_emp s) -- if true the result of this subquery will be affected to creances_emp
ELSE
(select SUM (NOMBRE_CREANCE) from sc01_emp s) -- if false the result of this subquery will be affected to creances_emp
END 
as creances_emp,
ANNEE as annee
from sc01_emp s;

【讨论】:

    【解决方案2】:

    试试

    SELECT 
    CASE WHEN filtre = 10
    THEN
    (
     select sum(s.MONTANT_CREANCE_EMP) as creances_emp  , s.ANNEE as annee from sc01_emp s
    )
    ELSE
    (
    select sum(s.NOMBRE_CREANCE) as creances_emp  , s.ANNEE as annee from sc01_emp s
    )  
    END
    from <table>
    

    【讨论】:

    • 我试过了,但我得到了一个错误:filtre identificateur non valide (ID not valid)
    • 我试过了,但我得到了一个错误:filtre identificateur non valide (ID not valid)
    • 将“from dual”替换为“from ”
    • 另一条消息:trop de valeur 查询语句(太有价值的查询语句)
    • 错误号是多少,我想我们可能会在翻译中丢失一些东西
    猜你喜欢
    • 2016-05-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2023-04-07
    • 2013-09-14
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多