首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >嵌套case语句sql

问嵌套case语句sql
EN

Stack Overflow用户
提问于 2015-07-03 23:00:39
回答 2查看 1.4K关注 0票数 4

我在用SQL编写一个case语句时遇到了问题。我的第一个问题是:是否可以在select语句中的SQL查询中将下面的if语句写成case语句?

如果没有,请看下面的案例说明,并帮助/指导我进入有效的格式。谢谢,非常感谢!

代码语言:javascript
复制
IF (var1 = 1){
do this1;
IF (var 1 = 2){
    Do this2;
    }Else{ 
    do something else1;
    }
Else if (Var 1 = 3){
    Do this3; 
    }Else{ 
    Do something else2;
    }   

这是我的案例陈述。我知道它不起作用,因为它不是一个有效的案例陈述。有人能帮我把它写成一个有效的案例陈述吗?提前谢谢。

代码语言:javascript
复制
    SELECT
CASE
    WHEN apple.type = 1 OR apple.type = 2
    THEN basket.S1
    ELSE 
        CASE 
            WHEN apple.type = 0 AND basket.S2 is null
            THEN basket.S1
            ELSE basket.S2  
        ELSE 
            CASE
                WHEN apple.type = 3 and basket.s3 is null
                THEN basket.S1
                ELSE basket.S3
            END
        END
    END 
FROM .....
WHERE ..... 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-03 23:38:05

由于您正在检查空值并替换非空值,所以可以使用 function缩短查询时间。

代码语言:javascript
复制
SELECT
  CASE
    WHEN apple.type IN (1, 2) THEN basket.s1
    WHEN apple.type = 0 THEN COALESCE(basket.s2, basket.s1)
    WHEN apple.type = 3 THEN COALESCE(basket.s3, basket.s1)
  END
FROM ...
票数 2
EN

Stack Overflow用户

发布于 2015-07-03 23:10:14

我认为你把案例陈述复杂化了,看看你的第一个例子你的案例陈述应该相当简单,

就像..。

代码语言:javascript
复制
SELECT CASE 
           WHEN @Var1 = 1 THEN 'Something 1'
           WHEN @Var1 = 2 THEN 'Something 2'
           WHEN @Var1 = 3 THEN 'Something 3'
           ELSE 'Something Else'
       END 
FROM .....
WHERE .....

你的案例陈述我们能写这样的东西吗..。

代码语言:javascript
复制
SELECT
    CASE
        WHEN apple.[type] IN (1,2)
        THEN basket.S1
        WHEN apple.type = 0 AND basket.S2 is null
        THEN basket.S1
        WHEN apple.type = 3 and basket.s3 is null
        THEN basket.S1
        ELSE basket.S3
    END
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31215089

复制
相关文章

相似问题

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