首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >案例表达

案例表达
EN

Stack Overflow用户
提问于 2022-06-23 15:28:56
回答 2查看 40关注 0票数 0

如何编写具有两个条件的case表达式?

在下面的代码中,我想说的是,当颜色是红色的,质量是差的,那么价格。当颜色是红色但质量是好的,那么价格*2。

质量只有两种选择,即好的和坏的

代码示例:

代码语言:javascript
复制
Case when color = 'red' and quality = 'Bad' then price
     else price * 2
end as RED
EN

回答 2

Stack Overflow用户

发布于 2022-06-23 19:12:26

以下是案件的基本结构:

代码语言:javascript
复制
case
    when A then X
    when B then Y
    else Z
end

您可以拥有任意多行的“when/然后”行(或者dbms支持的行)。你可以用任何布尔表达式代替A或B。你可以用任何表达式来代替X,Y和Z,包括另一种情况。

因此,您可以简单地列出如下所有的组合:

代码语言:javascript
复制
case
    when color = 'red' and quality = 'Good' then price*2
    when color = 'red' and quality = 'Bad' then price
    when color = 'blue' and quality = 'Good' then price*3
    when color = 'blue' and quality = 'Bad' then price/2
    else null
end as price

或者你可以这样筑巢:

代码语言:javascript
复制
case
    when color = 'red' then
        case
            when quality = 'Good' then price*2
            else price
        end
    when color = 'blue' then
        case
            when quality = 'Good' then price*3
            else price/2
        end
    else 
        null
end as price
票数 2
EN

Stack Overflow用户

发布于 2022-06-23 15:55:04

考虑到你的例子:

代码语言:javascript
复制
select case color 
                when 'red' 
                     then (case quality when 'Bad' then price when 'Good' then price*2 end) 
                when 'white' 
                     then (case quality when 'Bad' then price+10 when 'Good' then (price+10)*2 end)
    --              [... other conditions ...]
                else 0 
            end as Price

看看这个案子的语法..。末端可以用不同的方式使用。

代码语言:javascript
复制
case field when value1 then result1 when value2 then result2 ... else result0 end

代码语言:javascript
复制
case when field=value1 then result1 when field=value2 then result2 ... else result0 end

每个结果(result1,result2,result0)本身都可能是.结束陈述。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72732766

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档