同时更新多个列

问题描述 投票:-1回答:1

我需要在同一个查询中更新一个包含多个列的表(以及if else子句)可以指导我获得所需的输出。

update tablename 
set 
  IsEmailable=CASE 
    WHEN Email IS NOT NULL AND DNIInd <> 'Y' AND DoNotEmail <> 'Y' THEN 'Y' 
    ELSE 'N' 
  END,
  IsCallable=CASE 
    WHEN (ResTlphnNum IS NOT NULL OR CellTlphnNum IS NOT NULL) AND DoNotCallInd <> 'Y' AND DNIInd <> 'Y' THEN 'Y' 
    ELSE 'N' 
  END,
  IsMailable=CASE 
    WHEN AddrLine1Txt IS NOT NULL AND BadAddrInd <> 'Y' AND DoNotMailInd <> 'Y' AND DNIInd <> 'Y' THEN 'Y' 
    ELSE 'N' 
  END;
sql teradata
1个回答
1
投票

只需使用案例陈述:

update tablename set IsEmailable=CASE WHEN Email IS NOT NULL AND DNIInd='N' AND DoNotEmail='N' THEN 'Y' ELSE 'N' END, 

IsCallable=CASE WHEN (ResTlphnNum IS NOT NULL OR CellTlphnNum IS NOT NULL) AND DoNotCallInd='N' AND DNIInd='N' THEN 'Y' ELSE 'N' END,

IsMailable=CASE WHEN AddrLine1Txt IS NOT NULL AND BadAddrInd='N' AND DoNotMailInd='N' AND DNIInd='N' THEN 'Y' ELSE 'N' END
© www.soinside.com 2019 - 2024. All rights reserved.