SQL 中无表达式 CASE 内有多个 WHEN?

发布于 2024-07-14 06:45:40 字数 523 浏览 4 评论 0原文

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

我在网上看到了这个示例代码,但我找不到没有表达式并且有多个 WHEN 的示例,所以我想知道这种类型的事情是否可以:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END

或者我需要为每一行说 CASE WHEN ?

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
        ELSE 'Other'
    END

I saw this sample code online but I couldn't find an example where there was no expression and it had more than one WHEN, so I am wondering if this type of thing is OK:

    DECLARE @TestVal int
SET @TestVal = 5

SELECT
    CASE
        WHEN @TestVal <=3 THEN 'Top 3'
                WHEN (select ...) = 1 THEN 'Other Value'
                WHEN (select ...) = 2 THEN 'Other Value 2'
        ELSE 'Other'
    END

Or do I need to say CASE WHEN for each line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

情话墙 2024-07-21 06:45:40

是的,没问题,但我会垂直排列“WHEN”并像这样解释它:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END

格式可能只是一个降价故障,但示例中的 (select...)复杂的东西应该是一个简单的片段。

Yes, that's fine, but I would line up the "WHEN"s vertically and explain it more like this:

SELECT
    CASE
        WHEN @TestVal <=3  THEN 'Top 3'
        WHEN @TestVal <=10 THEN 'Top 10'
        WHEN @TestVAl <=25 THEN 'Top 25'
        ELSE 'Other'
    END

The formatting might just be a markdown glitch, but the (select...) in your example complicated what should be a simpler snippet.

清眉祭 2024-07-21 06:45:40

案例采用以下形式

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

编辑

这假设您使用 Microsoft SQL Server 其他 DBMS可能会有所不同

Case takes the following form

CASE WHEN Condition THEN Result
     WHEN Condition2 THEN Result2
ELSE Default
END

Edit

This assumes your using Microsoft SQL Server other DBMS might be different

烟酒忠诚 2024-07-21 06:45:40
    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

对于嵌套 case 语句,也可以这样做(sql 中最多允许 10 个嵌套 case 语句)

http://msdn.microsoft.com/en-us/library/ms181765.aspx

    SELECT
       CASE
          WHEN @TestVal <=3  THEN 'Top 3'
          WHEN @TestVal <=10 THEN 'Top 10'
          WHEN @TestVAl <=25 THEN 'Top 25'
          ELSE 'Other'
       END

In regards to nesting case statements this can be done as well (up until 10 nested case statements allowed within sql)

http://msdn.microsoft.com/en-us/library/ms181765.aspx

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文