我正在尝试将两个查询的列组合如下: 我正在寻找一种Access解决方案。
Query1: Query2:
------------- -------------
Col1 Col2 ColA ColB
------------- -------------
314 2 314 1
314 3 314 7
314 4 314 3
314 5 314 8
Desired Output:
Col1 Col2 ColB
314 5 8
314 4 7
314 3 3
314 2 1
我尝试了内连接:
SELECT Query1.col1, Query1.col2, Query2.colB
FROM Query2 INNER JOIN Query1 ON Query2.colA = Query1.col1;
但是我得到了这个不受欢迎的输出:
Undesired output:
Col1 Col2 ColB
314 4 1
314 5 1
314 2 1
314 3 1
314 4 7
314 5 7
314 2 7
314 3 7
314 4 3
314 5 3
314 2 3
314 3 3
314 4 8
314 5 8
314 2 8
314 3 8
谢谢!
答案 0 :(得分:0)
这是Access中的一个非常难的问题,因为您正在加入两列的行列。这是一种方法,虽然效率不高:
SELECT Query1.col1, Query1.col2, Query2.colB
FROM (select q.*,
(select count(*)
from query1 as q2
where q2.col2 >= q.col2 and q2.col1 = q.col1
) as seqnum
from Query1 as q
) as query1 INNER JOIN
(select q.*,
(select count(*)
from query2 as q1
where q1.colB >= q.colB and q1.colA = q.colA
) as seqnum
from Query2 as q
) as Query2
ON Query2.col1 = Query1.colA and
Query2.seqnum = Query1.seqnum;
此构造在其他数据库中更容易,例如可以使用row_number()
函数的SQL Server。
此外,假设您在两列中没有重复值,此版本可以正常工作。对于重复项,您需要一些其他列来唯一标识每一行(例如,id或创建日期)。