我还没有弄清楚如何整理这个SQL字符串。如果有人可以帮助我,我真的很感激。我正在使用Access 2016,因此请仅提供适用于Access的答案。我有两个查询,除了一个共同点之外,它们都有不同的字段。我需要找到两个相似列之间的最小绝对差值。然后,我需要能够从相应的记录中提取数据。例如,
qry1.Col1 | qry1.Col2
-----------|-----------
10245.123 | Have
302044.31 | A
qry2.Col1 | qry2.Col2
----------------------
23451.321 | Great
345622.34 | Day
在第三个查询中找到最小绝对差值qry3。例如,Min(Abs(qry1!Col1 - qry2!Col1)我想它会为qry1.Col1中的每个值生成其中一个表。对于值10245.123,
qry3.Col1
----------
13206.198
335377.217
由于13206.198是最小绝对差值,我想拉出与qry2相对应的记录,并将其与qry1中的数据相关联(假设这使用JOIN,我假设)。导致像这样的第四个查询,
qry4.Col1 (qry1.Col1) | qry4.Col2 (qry1.Col2) | qry4.Col3 (qry2.Col2)
----------------------------------------------------------------------
10245.123 | Have | Great
302044.31 | A | Day
如果在一个SQL字符串中都可行,那就太好了。如果需要几个步骤,那也没问题。我只想避免在VBA中使用循环和RecordSet.Findfirst来耗费时间。
答案 0 :(得分:1)
您可以使用相关子查询:
select q1.*,
(select top 1 q2.col2
from qry2 as q2
order by abs(q2.col1 - q1.col1), q2.col2
) as qry2_col2
from qry1 as q1;