我的表的重要部分是成员的唯一标识符,日期,主要项目类型标识符以及三个备选项目类型标识符中的任何一个.
我正在尝试做的是查找记录,其中任何替代项类型标识符在稍后的同一个人的主项类型标识符列中结束.这是一个示例表:
+-------------------------------------------------------+
|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 |
+-------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我需要在这里找到像第二个这样的记录,这个记录比这个人的另一个更晚,并且之前是该特定人的替代项目.我所在的表有大约1700条记录,其中大约300条是一个人的倍数.
如果解决方案无法通过Access SQL完成,我对VBA很好.谢谢.
怎么样:
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
Run Code Online (Sandbox Code Playgroud)
我打电话给表测试.