![](/img/trans.png)
[英]How to write the CASE Statement syntax for this logic in SQL Server?
[英]How to write case logic in SQL
我有一個場景,我想在下面編寫 SQL 案例邏輯
不明白何時使用符號'<>'
邏輯一:
if [ employee_name] = 'ABC' then
empcode='ABC'
empcourse=Null
邏輯2:
if [ employee_name] <> 'ABC' then
empcode='PQR-N'
empcourse='MBA'
以下是我嘗試編寫的查詢:
case
when employee_name equal ABC and empcode equal 'ABC'
then
empcode='ABC'
empcourse=Null
使用兩個case
表達式。 我想你想要:
(case when employee_name = 'ABC' then 'ABC' else 'PQR-N' end) as empcode,
(case when employee_name = 'ABC' then NULL else 'MBA' end) as empcourse
您一次只能為 select 列表中的一列提供值; 因此,您必須與empcourse
分開處理empcode
值。
您的邏輯可以表示為:
CASE
WHEN employee_name = 'ABC'
THEN 'ABC'
WHEN employee_name <> 'ABC'
THEN 'PQR-N'
ELSE NULL
END AS empcode,
CASE
WHEN employee_name = 'ABC'
THEN NULL
WHEN employee_name <> 'ABC'
THEN 'MBA'
ELSE NULL
END AS empcourse
這是因為有第三種情況, employee_name
為NULL
然后employee_name = 'ABC'
為假, employee_name <> 'ABC'
也為假; 要明確說明您的 output 在第三種情況下,您可以測試前兩種,然后使用ELSE
條件。
第一個表達式可以更明確地(和冗長地)寫成:
CASE
WHEN employee_name IS NOT NULL AND employee_name = 'ABC'
THEN 'ABC'
WHEN employee_name IS NOT NULL AND employee_name <> 'ABC'
THEN 'PQR-N'
ELSE -- employee_name IS NULL
NULL
END AS empcode,
CASE
WHEN employee_name IS NOT NULL AND employee_name = 'ABC'
THEN NULL
WHEN employee_name IS NOT NULL AND employee_name <> 'ABC'
THEN 'MBA'
ELSE -- employee_name IS NULL
NULL
END AS empcourse
如果您打算只使用兩種狀態(二進制邏輯,而不是使用第三個NULL
狀態),那么:
CASE
WHEN employee_name = 'ABC'
THEN 'ABC'
ELSE -- employee_name IS NULL OR employee_name <> 'ABC'
'PQR-N'
END AS empcode,
CASE
WHEN employee_name = 'ABC'
THEN -- employee_name IS NULL OR employee_name <> 'ABC'
NULL
ELSE 'MBA'
END AS empcourse
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.