假设我有一个名为“Company”的表,其键为 CompanyID
还有另一个名为“CompanyAddress”的相关表,它具有 CompanyID 外键,因此可以轻松建立连接。
此 CompanyAddress 表可以具有给定公司的多个地址,例如 AddressType = 1 或 AddressType = 2
获取字段的连接等很简单,但是我想要一个条件,在其中查询地址,如果存在,则使用 AddressType = 1,如果不存在,则使用 AddressType = 2
目前,我正在考虑进行联合并删除重复项,但必须有更好的方法
通过使用 OLAP 函数来做到这一点实际上非常简单(如果您使用的是 DB2 for Linux/UNIX/Windows)。我猜测了 companyAddress 表中的一些列名,但“魔力”在于rank()函数中:
with preferredAddresses as (
select
companyID,
address,
addresstype,
rank() over (partition by companyID order by addresstype ) as rank
from
companyAddress
)
select *
from
company C,
inner join preferredAddresses A
on c.companyID = A.companyID
where
A.rank = 1;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)