J'écris une déclaration sélective dans Postgres qui contient une déclaration de cas comme suit:
,(case when all_loc.country = 'DE' then msc_si.buyer_id else msc_si.buyer_name end) as "purchasing_group_name_buyer_name" --story
,(case when all_loc.country = 'DE' then msc_si.planner_code else mscp.description end) as "mrp_controller_name" --story
Je reçois l'erreur suivante. J'ai essayé avec IS
au lieu de =
, n'a pas fonctionné. Sans ces deux instructions case
, la requête fonctionne parfaitement.
ERREUR: les types de CAS varient en caractères et les nombres ne peuvent pas être mis en correspondance État SQL: 42804
Toutes les branches d'une expression case
doivent renvoyer le même type de données. Une façon d'y parvenir est de lancer explicitement le cas échéant:
,(case when all_loc.country = 'DE' then msc_si.buyer_id::varchar else msc_si.buyer_name end) as "purchasing_group_name_buyer_name"
-- Here -----------------------------------------------^
,(case when all_loc.country = 'DE' then msc_si.planner_code::varchar else mscp.description end) as "mrp_controller_name"
-- And gere -----------------------------------------------^