web-dev-qa-db-ja.com

エラー:CASEタイプの文字が変化し、数値が一致しません

私は次のようにケース文を含む選択文をPostgresで書いています:

,(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

次のエラーが表示されます。 =の代わりにISを試しましたが、うまくいきませんでした。これらの2つのcaseステートメントがなければ、クエリは完全に実行されます。

エラー:CASEタイプの文字可変および数値はSQL状態と一致できません:42804

11
Abhijit

case式のすべてのブランチは、同じデータ型を返す必要があります。これを実現する1つの方法は、必要な場所に明示的にキャストすることです。

,(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 -----------------------------------------------^
19
Mureinik