0

我的表的重要部分是成员的唯一标识符、日期、主要项目类型标识符以及三个备选项目类型标识符中的任何一个。

我想要做的是查找记录,其中任何替代项目类型标识符在以后的同一个人的主要项目类型标识符列中结束。这是一个示例表:

+-------------------------------------------------------+
|NAME|DATE   |MAIN ITEM|ALT ITEM 1|ALT ITEM 2|ALT ITEM 3|
+-------------------------------------------------------+
|John|9/11/12|  12345  |  99999   |  88888   |  77777   |
+-------------------------------------------------------+
|John|9/12/12|  99999  |  66666   |  55555   |  44444   |
+-------------------------------------------------------+

我需要在这里找到第二个这样的记录,该记录比此人的另一个日期晚,并且以前是此特定人的替代项目。我所在的表有大约 1700 条记录,其中大约 300 条是一个人的倍数。

如果无法通过 Access SQL 完成解决方案,我可以使用 VBA。谢谢你。

4

1 回答 1

5

怎么样:

SELECT u1.NAME, u1.Date, u1.[MAIN ITEM], u2.NAME, u2.Date, u2.ITEM
FROM (
    SELECT Test.NAME, Test.DATE, Test.[MAIN ITEM]
    FROM Test)  AS u1 
INNER JOIN (
    SELECT Test.NAME, Test.DATE, Test.[ALT ITEM 1]  As Item
    FROM Test
    UNION ALL
    SELECT Test.NAME, Test.DATE, Test.[ALT ITEM 2] As Item
    FROM Test
    UNION ALL
    SELECT Test.NAME, Test.DATE, Test.[ALT ITEM 3] As Item
    FROM Test)  AS u2 
ON (u1.NAME = u2.NAME) AND (u1.[MAIN ITEM] = u2.[ITEM])
WHERE u1.Date>u2.date

我已经调用了表格测试。

于 2012-09-12T22:14:22.507 回答