首页 > 解决方案 > MSSQL - 获取另一个表中字段中第一个较大值的值

问题描述

查询从 中返回以下结果集tableA

Condition   Ranking
Cell        103
Cell        142
CM          124
ECM         423
CM          105
ECM         404

在单独tableB的情况下,对于上述 3 个条件,我的值的总和都在增加,如下所示:

Condition   Bins    IncreasingSum
Cell        Bin1    0
Cell        Bin2    1
Cell        Bin3    1
Cell        Bin4    10
Cell        Bin5    36
Cell        Bin6    94
Cell        Bin7    223
....        ....    ...
ECM         Bin1    2
ECM         Bin2    4
ECM         Bin3    11
ECM         Bin4    34
ECM         Bin5    77
ECM         Bin6    166
ECM         Bin7    326
ECM         Bin8    540
ECM         Bin9    843
....        ....    ....
CM          Bin1    2
CM          Bin2    12
CM          Bin3    35
CM          Bin4    114
CM          Bin5    233
CM          Bin6    429

我想加入这些表并获得比条件所属的排名第一个更大的值的 Bin 的名称。更具体地说,结果如下所示:

Condition   Ranking    Bin
Cell        103        Bin7
Cell        142        Bin7
CM          124        Bin5
ECM         423        Bin8
CM          105        Bin4
ECM         404        Bin8

请问有什么建议吗?

标签: sqlsql-serverjoin

解决方案


您可以使用apply

select a.*, b.bin
from tableA a outer apply
     (select top (1) b.bin
      from tableB b
      where b.condition = a.condition and
            b.increasingsum > a.ranking
      order by b.increasingsum asc
     ) b;

推荐阅读