在sql server中使用case语句时如何指定多个值

Pra*_*Kan 0 sql t-sql sql-server

我有下表

Id  Number  TypeOfChange
1   2X      Scope,Cost,Schedule,EVM,PA
2   3x      Scope,Cost
Run Code Online (Sandbox Code Playgroud)

预期输出:

Id  Number  TypeOfChange                Scope  Cost  Schedule  EVM  PA
1   2X      Scope,Cost,Schedule,EVM,PA  X      X     X         X    X
2   3x      Scope,Cost                  X      X
Run Code Online (Sandbox Code Playgroud)

我尝试了以下脚本,但它不起作用

SELECT 
    Id, 
    Number,
    TypeOfChange,        
    Scope = CASE 
        WHEN TypeOfChange = 'Scope' THEN 'X' 
        ELSE '' END,
    Cost = CASE 
        WHEN TypeOfChange = 'Cost' THEN 'X' 
        ELSE '' END,
    Schedule = CASE 
        WHEN TypeOfChange = 'Schedule' THEN 'X' 
        ELSE '' END,
    EVM = CASE 
        WHEN TypeOfChange = 'EVM' THEN 'X' 
        ELSE '' END,
    PA = CASE 
        WHEN TypeOfChange = 'PA' THEN 'X' 
        ELSE '' END 
FROM A
Run Code Online (Sandbox Code Playgroud)

小智 5

使用 Like 运算符。

SELECT 
    Id, 
    Number,
    TypeOfChange,        
    Scope = CASE 
        WHEN TypeOfChange Like '%Scope%' THEN 'X' 
        ELSE '' END,
    Cost = CASE 
        WHEN TypeOfChange Like '%Cost%' THEN 'X' 
        ELSE '' END,
    Schedule = CASE 
        WHEN TypeOfChange Like '%Schedule%' THEN 'X' 
        ELSE '' END,
    EVM = CASE 
        WHEN TypeOfChange Like '%EVM%' THEN 'X' 
        ELSE '' END,
    PA = CASE 
        WHEN TypeOfChange Like '%PA%' THEN 'X' 
        ELSE '' END  
FROM A
Run Code Online (Sandbox Code Playgroud)

例子: 在此处输入图片说明