首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在SQL Server中按范围比较选择行?

如何在SQL Server中按范围比较选择行?
EN

Stack Overflow用户
提问于 2019-05-29 02:30:15
回答 2查看 42关注 0票数 -1

我在左边有一个名为T的表作为源表。

最终输出如下所示:

我只想获取Actual值在Basic之间的那些行,这些行与ModelLevel列相关联。

例如,如果使用Model = HT65,则Actual值23.2位于Basic = 22 & 24之间,因此应在Basic = 24处选择该行。即以黄色突出显示,JF97也是如此。这里你可以参考右边的表格作为参考结果。

对于同一模型,如果Actual为21,则应选择第一行,使用level = 1,如下所示:

如果Actual列值大于Basic Level中的值,则应将其标记为橙色突出显示的out,如下所示:

我没有尝试过,因为它对我来说似乎很复杂。您的帮助我们将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2019-05-29 03:09:01

你可以用一个简单的联合来做这件事。虽然有更复杂的方法可以做到这一点,但此流程允许您轻松地查看两个单独的比较,并根据需要进行调整。

从T选择模型、级别、实际

在level和basic之间的实际位置

友联市

从T选择模型、标高、'out‘

其中actual > basic

票数 0
EN

Stack Overflow用户

发布于 2019-05-29 03:34:06

我认为你想要:

代码语言:javascript
复制
select t.*, t2.level
from t outer apply
     (select top (1) t2.*
      from t t2
      where t2.model = t.model and t2.basic >= t.actual
      order by t2.level asc
     ) t2;

请注意,这将返回NULL而不是字符串'out'。由于转换逻辑的原因,混合字符串和数字会使查询变得复杂。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56348157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档