我在左边有一个名为T
的表作为源表。
最终输出如下所示:
我只想获取Actual
值在Basic
之间的那些行,这些行与Model
和Level
列相关联。
例如,如果使用Model = HT65
,则Actual
值23.2位于Basic = 22 & 24
之间,因此应在Basic = 24
处选择该行。即以黄色突出显示,JF97也是如此。这里你可以参考右边的表格作为参考结果。
对于同一模型,如果Actual
为21,则应选择第一行,使用level = 1
,如下所示:
如果Actual列值大于Basic Level中的值,则应将其标记为橙色突出显示的out,如下所示:
我没有尝试过,因为它对我来说似乎很复杂。您的帮助我们将不胜感激。
发布于 2019-05-29 03:09:01
你可以用一个简单的联合来做这件事。虽然有更复杂的方法可以做到这一点,但此流程允许您轻松地查看两个单独的比较,并根据需要进行调整。
从T选择模型、级别、实际
在level和basic之间的实际位置
友联市
从T选择模型、标高、'out‘
其中actual > basic
发布于 2019-05-29 03:34:06
我认为你想要:
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'
。由于转换逻辑的原因,混合字符串和数字会使查询变得复杂。
https://stackoverflow.com/questions/56348157
复制相似问题