Oracle
 sql >> база данни >  >> RDS >> Oracle

Казус с различен тип данни

case изразът може да върне само един тип данни. Така че преобразувайте числата в низове:

SELECT CASE
  WHEN fourthlevel.case_type IN ('Complaint')
  THEN
     (SELECT cast(COUNT(*) as varchar2(255))
        FROM work_days1
       WHERE     work_days1.business_date > fourthlevel.cdate
             AND work_days1.business_date <=
                    COALESCE (fourthlevel.close_date, SYSDATE))
  WHEN fourthlevel.case_type IN ('Enquiry')
  THEN
     (SELECT cast(COUNT(*) as varchar2(255))
        FROM work_days1
       WHERE     work_days1.business_date > fourthlevel.create_date
             AND work_days1.business_date <=
                    COALESCE (fourthlevel.close_date, SYSDATE))
  WHEN fourthlevel.case_status = 'Cancelled'
  THEN
     'N/A'
END AS sla_days
FROM fourthlevel

Като алтернатива можете да върнете NULL когато двете условия не съвпадат.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle &Pagination

  2. Entity Framework генерира short вместо int

  3. Как да премахнете „Избрани X редове“ в SQLcl &SQL*Plus (Oracle)

  4. Oracle REF не може да премине

  5. Каква е разликата между изгледи и материализирани изгледи в Oracle?