SQL中的嵌套大小写

SQL中的嵌套大小写,sql,sql-server,Sql,Sql Server,我试图做以下涉及复杂查询的工作:; 1.首先,我尝试根据一些逻辑选择列 2.然后根据所选列的值选择一个值 3.最后,基于之前的值,应用逻辑来获得最终值 在第3种情况的ELSE中,如何得到2的结果..然后语句 CASE CASE CASE WHEN MDC.Network ='I' THEN INNBenefitID ELSE OONBenefitID END WHEN 'INNDWO' THEN CASE W

我试图做以下涉及复杂查询的工作:; 1.首先,我尝试根据一些逻辑选择列 2.然后根据所选列的值选择一个值 3.最后,基于之前的值,应用逻辑来获得最终值

在第3种情况的ELSE中,如何得到2的结果..然后语句

CASE 
    CASE 
        CASE 
            WHEN MDC.Network ='I' THEN INNBenefitID ELSE OONBenefitID 
        END
        WHEN 'INNDWO' THEN CASE WHEN DWO.Description IS NOT NULL THEN DWO.Description ELSE MDC.CostShareValue END 
        WHEN 'OONDWO' THEN CASE WHEN DWO.Description IS NOT NULL THEN DWO.Description ELSE MDC.CostShareValue END 
        ELSE isnull(dbo.fn_FormatText(MDC.CostShareValue, CostShareType),'''') 
    END
    WHEN '0%' THEN 'Covered 100%'
    WHEN '$0' THEN 'Covered 100%' 
    ELSE ????
   END

你在找这样的东西吗

declare @value varchar(255) = (
                     CASE 
                     WHEN MDC.Network ='I' THEN INNBenefitID ELSE OONBenefitID 
                     WHEN 'INNDWO' THEN CASE WHEN DWO.Description IS NOT NULL THEN DWO.Description ELSE MDC.CostShareValue
                     WHEN 'OONDWO' THEN CASE WHEN DWO.Description IS NOT NULL THEN DWO.Description ELSE MDC.CostShareValue
                     ELSE isnull(dbo.fn_FormatText(MDC.CostShareValue, CostShareType),'''') 
                     END
                   ) 

CASE 
   WHEN '0%' THEN 'Covered 100%'
   WHEN '$0' THEN 'Covered 100%' 
   ELSE @value
END

如果没有模式或示例数据,就很难做到这一点。在未来考虑为我们创建一个SqLofDelp。但是你可以考虑的一种方法是使用一个公共表表达式(CTE)来定义一个中间结构,然后查询它。p>
;WITH theCTE AS (SELECT 
    CASE 
        CASE 
            WHEN MDC.Network ='I' THEN INNBenefitID ELSE OONBenefitID 
        END
        WHEN 'INNDWO' THEN COALESCE(DWO.Description, MDC.CostShareValue)
        WHEN 'OONDWO' THEN COALESCE(DWO.Description, MDC.CostShareValue)
        ELSE COALESCE(dbo.fn_FormatText(MDC.CostShareValue, CostShareType), '') 
    END AS foo
FROM 
    bar
)

SELECT 
    CASE  
        WHEN foo IN ('0%', '$0') THEN 'Covered 100%'
        ELSE '' -- Do something with foo --
    END AS finalColumn
FROM 
    theCTE 

Case表达式,而不是Case语句…请解释您想要的逻辑并提供示例。可能是,
交叉应用
是您的朋友…这是在Select语句中,我必须根据列值有条件地选择列以设置一些逻辑,然后对返回值进行字符串转换。我只想返回内部大小写..的值,当在外部大小写表达式的Else中时。我不能这样做,因为这个块在select语句中