私は次のようにケース文を含む選択文を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
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 -----------------------------------------------^