mysql - sql如何使用不同列的多个案例

标签 mysql sql

SELECT 
description_arab, 
CTS_TRX_TYPE, 
comp_code,
branch_code,
currency_code,
gl_code,
cif_sub_no,
cts_trs_no,
trans_date,
value_date,
fc_amount,
cv_amount,description,case when fc_amount is null then '0' else fc_amount end end as fc  , 
case when CTS_TRX_TYPE is null then 'JV' else CTS_TRX_TYPE end end as TRX_TYPE,
 CASE WHEN CURRENCY_CODE = 368 THEN 'IQD' ELSE CASE WHEN CURRENCY_CODE = 840 THEN 'USD' END  END AS CURRENCY 
 FROM dof WHERE to_date(trans_date,'DD/MM/YYYY')  between   to_date('24/09/18,'DD/MM/YYYY') AND 
 TO_DATE('21/11/18'     ,'DD/MM/YYYY') and currency_code IS NOT NULL
  order by   cts_trs_no

最佳答案

是的,您可以在表中的多个列上使用多个 case 语句。 但是从您的查询中我可以看到额外的 END 语句,因此只需将它们从您的查询中删除并更新最后一个 case 语句。 不确定这是否是您想要的 -

SELECT description_arab, 
   cts_trx_type, 
   comp_code, 
   branch_code, 
   currency_code, 
   gl_code, 
   cif_sub_no, 
   cts_trs_no, 
   trans_date, 
   value_date, 
   fc_amount, 
   cv_amount, 
   description, 
   CASE 
          WHEN fc_amount IS NULL THEN '0' 
          ELSE fc_amount 
   END AS fc , 
   CASE 
          WHEN cts_trx_type IS NULL THEN 'JV' 
          ELSE cts_trx_type 
   END AS trx_type, 
   CASE 
       WHEN currency_code = 368 THEN 'IQD' 
       WHEN currency_code = 840 THEN 'USD' 
       ELSE 'INVALID CURRECY' -- added this to check other checks as well
      END as currency 
    FROM   dof 
          WHERE  to_date(trans_date,'DD/MM/YYYY') BETWEEN to_date('24/09/18,'dd/mm/yyyy') AND  TO_DATE('21/11/18'     ,'dd/mm/yyyy') and currency_code IS NOT NULL   order by   cts_trs_no

关于mysql - sql如何使用不同列的多个案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53426163/

相关文章:

javascript - 使用 onClick 更新数据库(NewB)

php - 如何让ajax从php接收多条数据,且其中一条数据处于循环状态

mysql - MySQL突然“没有这样的文件或目录”直到重启

mysql - SQL - 按语句排序

sql - 动态 SQL - 执行时间长 - 仅限第一次

MySQL 更新时间过长

sql - PostgreSQL 中的 WHERE NOT EXISTS 给出语法错误

mysql - 空间索引未用于多边形边界框搜索

java - 在 Java 中缓存 Web 应用程序

c# - mySQL通过c#写数据到数据库