A expressão de caso não está funcionando corretamente na consulta sql

Eu quero concaturar colunas desupplier tabela com separador de vírgulas e coloque-a em um campo de alias chamado 'contato'. Eu usei casos para verificar valores nulos. Suponha quecontact_number2 é nulo entãocontact_number3 estará no campo alias e vice-versa. Aqui está a minha consulta

SELECT supplier_Name, supplier_Address, supplier_reference, contact_Number1,
       contact_number2, contact_number3,
      (case when contact_number2 is null then contact_number3 
            when contact_number3 is null then contact_number2 
            when contact_number3 is null and contact_number2 is null then 0
         -- when contact_number2 is not null and contact_number3 is not null then  CONCAT(CONCAT(contact_number2,','), contact_number3)
       end) as contact
FROM SUPPLIER

Se eu usar a quarta condição, ela funcionará, mas se eu usar várias condições, ela não funcionará.ORA-00932: inconsistent datatypes: expected NUMBER got CHAR 00932. 00000 - "inconsistent datatypes: expected %s got %s"

questionAnswers(4)

yourAnswerToTheQuestion