如何根据下面的查询编写嵌套的 CASE 语句?

Ser*_*dia 1 t-sql sql-server case

我正在使用CASEstatement 来创建 column Quoted。所以它会显示值 1 或 0。

但是DisplayStatus必须根据前一列的条件创建列Quoted。

在这种情况下,我似乎应该使用嵌套的 CASE 语句。但我无法提出正确的查询。

SELECT 
       case when isnull(grouptt.controlno,0) <>0 AND  isnull(vwR.Premium,0) > 0 then 
      cast( 1 as bit)
      else cast( 0 as bit)
      end as Quoted,

      CASE 
           WHEN a.DisplayStatus = 'LOST' AND quoted=1  THEN 'Quoted_Lost'
           WHEN a.DisplayStatus = 'DECLINED' AND quoted=1  THEN 'Quoted_NotTakenUp'
           WHEN a.DisplayStatus = 'NOT TAKEN UP' AND quoted=1  THEN 'Quoted_Lost'
           ELSE
                  a.DisplayStatus
      END
      DisplayStatus
    FROM MyTable 
Run Code Online (Sandbox Code Playgroud)

Fel*_*tan 6

使用嵌套CASE表达式

SELECT 
    CASE 
        WHEN ISNULL(grouptt.controlno, 0) <> 0 AND ISNULL(vwR.Premium, 0) > 0 THEN CAST(1 AS BIT)
        ELSE CAST(0 AS BIT)
    END AS Quoted,
    CASE
        WHEN ISNULL(grouptt.controlno, 0) <> 0 AND ISNULL(vwR.Premium, 0) > 0  THEN  
            CASE
                    WHEN a.DisplayStatus = 'LOST' THEN 'Quoted_Lost'
                    WHEN a.DisplayStatus = 'DECLINED' THEN 'Quoted_NotTakenUp'
                    WHEN a.DisplayStatus = 'NOT TAKEN UP' THEN 'Quoted_Lost'
                    ELSE a.DisplayStatus
            END
        ELSE a.DisplayStatus
    END AS DisplayStatus
FROM MyTable 
Run Code Online (Sandbox Code Playgroud)