[英]Use of case in select statement
我有一列將有多個值 - 現金、支票、dd、pdc,在此基礎上,我必須在其他列中顯示價值,例如如果該列具有現金價值,那么現金列的值將是“是”和其他支票,dd 列將為“否”,如果列值為現金,則檢查現金列和支票列將為“是”,dd 列將為“否”,依此類推。 這是否可以通過在 select 語句中使用 case 來完成。 請指導。
對的,這是可能的。 假設您的表名是 payment_table 並且有問題的列稱為 mode_of_payment:
SELECT mode_of_payment,
CASE
WHEN mode_of_payment = 'cash' THEN 'YES'
ELSE 'NO'
END AS is_cash
FROM
payment_table
有兩種選擇。
case.. when
語句decode
--
Case when upper(col) = 'CASH' then
'YES' else 'NO' end as is_cash
-- or
Decode(upper(col), 'CASH', 'YES','NO') as is_cash
自己為其他列做。
這樣的事情可能會有所幫助
SELECT CASE
WHEN Col = 'Cheque'
THEN 'Yes'
ELSE 'No'
END AS Cheque
, CASE
WHEN Col = 'Cash'
THEN 'Yes'
ELSE 'No'
END AS Cash
, CASE
WHEN Col = 'dd'
THEN 'Yes'
ELSE 'No'
END AS dd
, CASE
WHEN Col = 'pdc '
THEN 'Yes'
ELSE 'No'
END AS pdc
FROM MyTable
您可以將其用於最佳解決方案:
select mode_payment,
(case when mode_payment = 'CASH' then 'YES' else 'NO' end) cash,
(case when mode_payment = 'RTGS' then 'YES' else 'NO' end) RTGS,
(case when mode_payment = 'CHEQUE' then 'YES' else 'NO' end) CHEQUE,
(case when mode_payment = 'NEFT' then 'YES' else 'NO' end) NEFT,
(case when mode_payment = 'DD' then 'YES' else 'NO' end) DD
from tablename
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.