sql - 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
请问有什么建议吗?
解决方案
您可以使用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;
推荐阅读
- python-3.x - 根据特定值从 XML 创建多个数据框
- c++ - 渲染 mandelbrot 集的颜色(并使其看起来不错)
- android-studio - 颤振完成错误:ProcessException:权限被拒绝
- javascript - Tampermonkey 的全系统替代方案
- spring - 降低在 AWS EC2 中运行的 Spring Boot 项目的成本
- reactjs - React Native 的可排序表组件
- javascript - 如何在 Ionic 4 应用程序中验证 ion-datetime 标签?
- git - Windows 服务 git pull 问题
- android - ibm watson 语音转文本
- sas - 扫描函数以读取以空格为前缀的字符串