【发布时间】:2013-04-03 23:53:50
【问题描述】:
我有一个场景,我想用交叉引用表中的另一个值覆盖一个值。它们可以是通用覆盖或投资组合特定覆盖。我的交叉引用表如下所示:
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。我怎样才能加入这个表,这样我就不会得到重复,但它涵盖了特定的投资组合覆盖、通用覆盖和没有覆盖的位置?
【问题讨论】:
-
如果您有 SEDOL= 1 AND Portfolio = 1,应该采用哪个覆盖?您拥有相同价值的投资组合和通用覆盖。这就是重复的地方。
-
这只是示例数据,这不是我的实际数据的问题