我有一个这样的查询(PostgreSQL 15.4):
Select p."prodId", p."prodDesc", p."areaName", x."location1" as "Location"
From ops."Products" p
Inner Join ops."Locations" x on p."prodId" = x."prodId"
and p."areaName" = x."areaName1"
这里有一个警告:在表
Locations
中,有三个位置:location1
、location2
和 location3
。另外还有三栏areaName1
、areaName2
、areaName3
。
我需要将
location
列返回为 location1
、location2
或 location3
,基于 areaName
表中的 Products
列等于 中相应的 areaName
列之一Locations
:areaName1
、areaName2
或areaName3
。
我的想法是能够使用某种函数,我可以将函数用于查询的其余部分,并让该函数处理上述所有内容。在遥远的土地和时间,我可能会将其处理为动态 SQL,但想知道是否有更好的方法?
您可以在查询中内联执行此操作,但它会比仅修复数据结构更慢(且不易维护)。
join