0

私のテーブルの重要な部分は、メンバーの一意の識別子、日付、メインのアイテム タイプ識別子、および 3 つの代替アイテム タイプ識別子のいずれかです。

私がやろうとしているのは、代替アイテム タイプ識別子のいずれかが、後日、同じ人物のメイン アイテム タイプ識別子列に含まれるレコードを見つけることです。以下にテーブルの例を示します。

+-------------------------------------------------------+
|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   |
+-------------------------------------------------------+

ここにある 2 番目のレコードのようなレコードを見つける必要があります。このレコードは、この人物の他のレコードよりも後の日付であり、以前はこの特定の人物の代替アイテムでした。私がいるテーブルには約 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 に答える