2012-09-12 36 views
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很满意。谢谢。

回答

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 

我呼吁表测试。

+0

辉煌。谢谢! – Tim

相关问题