在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
最佳答案
你可以尝试某种COALESCE技巧,例如:

SELECT COALESCE(
  CASE WHEN condition1 THEN calculation1 ELSE NULL END,
  CASE WHEN condition2 THEN calculation2 ELSE NULL END,
  etc...
)

转载注明原文:在SQL Server中嵌套case语句逻辑的最佳方法 - 代码日志