SQL 服务器中的 Case 表达式中的 WHEN ELSE

WHEN ELSE in Case expression in SQL Server

我正在我的 SQL 服务器中编写 case 表达式,我想在 else 块中添加硬编码值。

我想检查 case 表达式,如果下面的 DHB 输出是 2.1ABC001 那么它应该显示 ABC Hospital.

的硬编码值
SELECT DISTINCT
    userid, 
    CASE 
       WHEN CHARINDEX('-', e.name) > 0 
          THEN Ltrim(Rtrim(substring(e.name,0, charIndex('-', e.name)))) 
       ELSE e.name 
    END as DHB      
FROM
    [Table1].[dbo].Event ae
JOIN
    [Portal].[dbo].cUser cu ON cu.name = ae.userID
JOIN
    [Portal].[dbo].UAttribute ua ON ua.cUser = cu.uniqueId
JOIN
    [Portal].[dbo].[EIdentifier] ei ON ei.cUser = cu.uniqueId
JOIN
    [Portal].[dbo].[EIdentifierType] e ON e.uniqueId = ei.externalIdentifierType
WHERE
    (e.name LIKE '%ABC001%' OR e.name LIKE '2.1')
    AND userId = 'Al5'

当前输出

          userid    DHB
           Al5     2.1
           Al5      ABC001
           Bl5     3.1
           Bl5      CDE001

预期输出

          userid    DHB
           Al5     ABC Hospital
           Bl5      EFG Hospital

我在下面尝试过类似的方法

CASE WHEN Ltrim(Rtrim(substring(e.name,0, charIndex('-', e.name)))) = 'ABC001' THEN 'ABC Hospital'
      WHEN e.name = '2.1' THEN 'ABC Hospital'
      ELSE e.name 'ABC Hospital'
  END as DHB 

但它不允许我输入 ELSE e.name 'ABC Hospital'

非常感谢任何帮助!!

我能够解决您的问题并更新查询以满足您的需要。

SELECT DISTINCT userid,
CASE WHEN DHB in ('2.1','ABC001') THEN 'ABC Hospital'
ELSE DHB END 
FROM 
(
SELECT 
    userid, 
    CASE 
       WHEN CHARINDEX('-', e.name) > 0 
          THEN Ltrim(Rtrim(substring(e.name,0, charIndex('-', e.name)))) 
       ELSE e.name 
    END as DHB      
FROM
    [Table1].[dbo].Event ae
JOIN
    [Portal].[dbo].cUser cu ON cu.name = ae.userID
JOIN
    [Portal].[dbo].UAttribute ua ON ua.cUser = cu.uniqueId
JOIN
    [Portal].[dbo].[EIdentifier] ei ON ei.cUser = cu.uniqueId
JOIN
    [Portal].[dbo].[EIdentifierType] e ON e.uniqueId = ei.externalIdentifierType
WHERE
    (e.name LIKE '%ABC001%' OR e.name LIKE '2.1')
    AND userId = 'Al5'
) as aa