簡體   English   中英

SQL 服務器中的 Case 表達式中的 WHEN ELSE

[英]WHEN ELSE in Case expression in SQL Server

我正在我的 SQL 服務器中編寫case表達式,我想在 else 塊中添加硬編碼值。

我想檢查 case 表達式,如果下面的 DHB output 是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'

當前 output

          userid    DHB
           Al5     2.1
           Al5      ABC001
           Bl5     3.1
           Bl5      CDE001

預期 output

          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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM