在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法

新手上路,请多包涵

我正在编写一个 SQL 查询,其中返回的一些列需要根据很多条件进行计算。

我目前正在使用嵌套的 case 语句,但它变得混乱。有没有更好(更有条理和/或可读性)的方式?

(我正在使用 Microsoft SQL Server,2005)


一个简化的例子:

 SELECT
    col1,
    col2,
    col3,
    CASE
        WHEN condition
        THEN
            CASE
                WHEN condition1
                THEN
                    CASE
                        WHEN condition2
                        THEN calculation1
                        ELSE calculation2
                    END
                ELSE
                    CASE
                        WHEN condition2
                        THEN calculation3
                        ELSE calculation4
                    END
            END
        ELSE
            CASE
                WHEN condition1
                THEN
                    CASE
                        WHEN condition2
                        THEN calculation5
                        ELSE calculation6
                    END
                ELSE
                    CASE
                        WHEN condition2
                        THEN calculation7
                        ELSE calculation8
                    END
            END
    END AS 'calculatedcol1',
    col4,
    col5 -- etc
FROM table

原文由 Sophia 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 776
2 个回答

您可以尝试某种 COALESCE 技巧,例如:

选择合并(
  CASE WHEN 条件 1 THEN 计算 1 ELSE NULL END,
  CASE WHEN 条件 2 THEN 计算 2 ELSE NULL END,
  ETC...
)

原文由 Chris KL 发布,翻译遵循 CC BY-SA 2.5 许可协议

您可以结合多个条件来避免这种情况:

 CASE WHEN condition1 = true AND condition2 = true THEN calculation1
     WHEN condition1 = true AND condition2 = false THEN calculation2
     ELSE 'what so ever' END,

原文由 ssingh 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进