我在表 A 上有一列包含数字,在表 B 上有一列包含不同的数字。 如何创建表 A 数字的视图,其中第二列是与 B 最接近的数字。
---Table ColA---|---Table ColB---
13 | 22
25 | 49
22 | 11
33 | 36
我希望查看结果是
---View ColA---|---View ColB---
13 | 11
25 | 22
22 | 22
33 | 36
根据您要查看的数据量以及这只是一次性查询还是多次调用它,一种快速而肮脏的解决方案可能是简单地交叉连接表,...
...并使用函数
ROW_NUMBER
(链接到文档)选择正确的条目 ABS
(链接到文档)函数计算 to 列之间的绝对差并简单地将其包装全部都在子查询中,以保持干净。
可能看起来像这样:
SELECT t1num, t2num FROM (
SELECT
ROW_NUMBER() OVER(Partition BY t1.num ORDER BY t1.num, ABS(t1.num - t2.num) ) rowNum,
t1.num t1num,
t2.num t2num
FROM Table1 t1 CROSS JOIN Table2 t2) SubQuery
WHERE rowNum = 1