[英]WHEN ELSE in Case expression in SQL Server
我正在我的 SQL 服務器中編寫case
表達式,我想在 else 塊中添加硬編碼值。
我想檢查 case 表達式,如果下面的 DHB output 是2.1
和ABC001
那么它應該顯示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.