select语句中case的用法

aiqt4smr  于 2021-07-24  发布在  Java
关注(0)|答案(4)|浏览(370)

我有一个列将有多个值-现金,支票,dd,pdc,在此基础上,我必须在其他列显示值,如如果列有价值现金,那么现金列的值将是'是',其他支票,dd列将是'否',如果列值是现金,“支票”则“现金”列和“支票”列将为“是”,dd列将为“否”,依此类推。是否可以在select语句中使用case来实现这一点。请引导。

vltsax25

vltsax251#

是的,这是可能的。假设您的表名为payment\u table,并且该列被称为mode\u of \u payment:

SELECT mode_of_payment, 
CASE
    WHEN mode_of_payment = 'cash' THEN 'YES'
    ELSE 'NO'
END AS is_cash
FROM
payment_table
8dtrkrch

8dtrkrch2#

有两种选择。 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

其他栏目自己做。

2q5ifsrm

2q5ifsrm3#

像这样的事情可能会有帮助

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
3htmauhk

3htmauhk4#

您可以使用它来实现最佳解决方案:

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

相关问题