sql-server - 具有多个条件的表连接
问题描述
我很难给出表格加入的条件。重点部分是我需要解决的 3 个条件。基本上,有一些证券的有效期限,如果值在 0 到 2 之间,则为 1,如果值在 2 到 10 之间,则为 2,如果值大于 10,则为 4 .
对于前两个条件,在查询的 where 部分我像这样解决它们
但是对于第三种情况,如果 Descriptsec 为空,我不太确定我能做什么,有人可以帮忙吗?
解决方案
你能改变你正在使用的查找表([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 别名的表中的有效术语是浮点数。所以你应该考虑向上或向下舍入。
总的来说,很多事情都可以改变/改进,但我试图提供一个直接的解决方案。
希望这可以帮助。
推荐阅读
- c++ - 如何从 QCamera 翻转图像?
- regex - Raku 正则表达式:如何在lookbehinds 中使用捕获组
- javascript - 什么是限制 Chrome 中触发的同时下载的好方法?
- arrays - 将中文字符转换为数组的索引
- amazon-ec2 - 我在 GitLab CI/CD 管道中不断收到来自 Ansible 的“无法创建临时目录”
- arduino - I2C 替代 GPIO 引脚 STM32F103C8T6
- javascript - 结果包含 ( ) 或 + 的 Vue/Lodash RegExp 问题
- telegram - Telethon AttributeError:“协程”对象没有属性“send_message”
- reactjs - 如何使用 React 测试库测试记忆化组件的回调?
- android - Jetpack Compose 设置问题:无法加载类 'org.jetbrains.kotlin.gradle.tasks.KotlinCompile'