我有一个场景,我想用交叉引用表中的另一个值覆盖一个值。它们可以是通用覆盖或投资组合特定覆盖。我的交叉引用表如下所示:
SEDOL Portfolio Override
1 1 Technology
1 2 Financial
1 NULL Industrial
2 NULL Technology
3 NULL Financial
如果投资组合为 NULL,那么它是一个通用覆盖,如果它有一个投资组合编号,那么它是一个投资组合特定覆盖。
那么我的选择将如下所示:
SELECT
Portfolio
, SEDOL
, CASE
WHEN hack.SEDOL = ia.SEDOL AND hack.Portfolio = ia.Portfolio THEN hack.Override -- Portfolio Specific Hack
WHEN hack.SEDOL = ia.SEDOL AND hack.Portfolio IS NULL THEN hack.Override -- Hack for all portfolio's
ELSE ia.Sector
END
FROM positions as ia
LEFT OUTER JOIN DP_CrossReference AS hack -- Override/Hacks
ON hack.SEDOL = ia.SEDOL
AND (hack.Portfolio = ia.Portfolio OR hack.Portfolio IS NULL)
然而,对于投资组合 1,我似乎得到了重复,其中投资组合特定的覆盖被返回,而 SEDOL 1 的通用覆盖被返回。我认为案例声明足以对此进行排序。它必须是我加入 DP_CrossReference。我怎样才能加入这个表,这样我就不会得到重复,但它涵盖了特定的投资组合覆盖、通用覆盖和没有覆盖的位置?