簡體   English   中英

select 語句中大小寫的使用

[英]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.

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