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)
使用嵌套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)
| 归档时间: |
|
| 查看次数: |
13222 次 |
| 最近记录: |