0

我正在尝试组合两个查询的列,如下所示: 我正在寻找 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 

谢谢!

4

1 回答 1

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 或创建日期)。

于 2013-05-25T13:53:33.453 回答