我有一个列将有多个值-现金,支票,dd,pdc,在此基础上,我必须在其他列显示值,如如果列有价值现金,那么现金列的值将是'是',其他支票,dd列将是'否',如果列值是现金,“支票”则“现金”列和“支票”列将为“是”,dd列将为“否”,依此类推。是否可以在select语句中使用case来实现这一点。请引导。
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
8dtrkrch2#
有两种选择。 case .. when 陈述 decode --
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
其他栏目自己做。
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
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
4条答案
按热度按时间vltsax251#
是的,这是可能的。假设您的表名为payment\u table,并且该列被称为mode\u of \u payment:
8dtrkrch2#
有两种选择。
case .. when
陈述decode
--其他栏目自己做。
2q5ifsrm3#
像这样的事情可能会有帮助
3htmauhk4#
您可以使用它来实现最佳解决方案: