首页 > 解决方案 > 具有多个条件的表连接

问题描述

我很难给出表格加入的条件。重点部分是我需要解决的 3 个条件。基本上,有一些证券的有效期限,如果值在 0 到 2 之间,则为 1,如果值在 2 到 10 之间,则为 2,如果值大于 10,则为 4 .

对于前两个条件,在查询的 where 部分我像这样解决它们

但是对于第三种情况,如果 Descriptsec 为空,我不太确定我能做什么,有人可以帮忙吗?

标签: sql-server

解决方案


你能改变你正在使用的查找表([Risk].[dbo].[FILiquidityBuckets])吗?

如果是,请执行以下操作:

添加边界,使表格如下所示:

Metric-DescriptLowerBound-DescriptUpperBound-LiquidityScore
Effective term-0-2-1
Effective term-2-10-2
Effective term-10-9999999(some absurd high number)-4

那么你的加入条件可以是这样的:

 ON FB3.Metric='Effective term' 
    AND CAST(sa.effectiveTerm AS INT) BETWEEN CAST(FB3.DescriptLowerBound AS INT) 
          AND CAST(FB3.DescriptLowerBound AS INT)

请注意,BETWEEN 包含在内,因此在边缘情况下(值正好是 2 或 10),将捕获较低的分数。

我可以看到一些问题:带有 sa 别名的表中的有效术语是浮点数。所以你应该考虑向上或向下舍入。

总的来说,很多事情都可以改变/改进,但我试图提供一个直接的解决方案。

希望这可以帮助。


推荐阅读