我在左侧有一个名为T
的下表作为源表。
最终输出应如下所示,
我只想获取Actual
值在Basic
之间且与Model
和Level
列相关联的那些行。
例如,如果您使用Model = HT65
,则Actual
的值为23.2介于Basic = 22 & 24
之间,因此应在Basic = 24
的位置选择该行。即以黄色突出显示,JF97也是如此。在这里,您可以将右侧表作为参考结果。
对于同一模型,如果Actual
为21,则应选择level = 1
作为第一行,如下所示:
如果实际列的值大于基本 级别中的值,则应将其标记为 输出 以橙色突出显示,如下所示,
我没有尝试过它,因为它对我来说似乎很复杂。您的帮助将不胜感激。
答案 0 :(得分:0)
您可以通过一个简单的联合来做到这一点。尽管有更复杂的方法可以执行此操作,但此流程使您可以轻松查看两个单独的比较并根据需要进行调整。
从T中选择型号,级别,实际值
在实际水平和基本水平之间
联盟
从T中选择型号,级别,“出”
实际>基本
答案 1 :(得分:0)
我想你想要
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'
。由于转换逻辑,混合使用字符串和数字会使查询复杂化。