2011-04-15 79 views
0

我需要幫助通過與ITEM列中的值匹配的TRANS_CODE來查詢不同記錄的表。任何幫助將非常感激。MS Access查詢顯示與另一列中的值匹配的重複記錄

下面是表格的一個例子。


ID TRANS_CODE ITEM 
1 CD50  Red 
2 TN30  Blue 
3 RC50  Green 
4 WC70  White 
5 PT30  Blue 
6 AB60  White 
7 RC50  Red 
8 WC70  Blue 
9 TN30  Green 
10 PT30  Green 

顯示重複TRANS_CODE的邏輯由ITEM列驅動。複製TRANS_CODE的第一個邏輯是顯示ITEM是藍色,而SECORD是顯示爲綠色的ITEM。例如...

重複TRANS_CODE有項目,藍色,綠色和紅色:與藍只
有項目重複TRANS_CODE,綠,紅,白展記錄:與青秀戰績僅爲

結果應該會生成此列表....


ID TRANS_CODE ITEM 
1 CD50   Red 
2 TN30   Blue 
3 RC50  Green 
8 WC70   Blue 
5 PT30   Blue 
6 AB60   White 
+0

所以你想選擇第一個唯一的'代碼`由`ID`命令? – 2011-04-15 18:09:53

回答

0

您可以使用開關將您的顏色映射到數字。然後使用兩個內聯查詢連接在一起,您可以得到您正在尋找的答案。

從技術上講,你不需要使用開關,因爲顏色是字母順序,但以防萬一你的真實值不

SELECT t.id, 
     t.transcode, 
     t.item 
FROM (SELECT transcode, 
       item, 
       id, 
       Switch([ITEM] = "Blue", 1, [ITEM] = "Green", 2, [ITEM] = "Red", 3 
       , 
       [ITEM] = 
       "White", 4) AS weight 
     FROM table2) AS t 
     INNER JOIN (SELECT transcode, 
          MIN(Switch([ITEM] = "Blue", 1, [ITEM] = "Green", 2, 
           [ITEM] = 
           "Red", 3, 
           [ITEM] = 
            "White", 4)) AS weight 
        FROM table2 
        GROUP BY transcode) AS t2 
     ON (t.weight = t2.weight) 
      AND (t.transcode = t2.transcode) 
ORDER BY t.id 

這列出了你的輸出,我希望ID 8 6,而不是3和作品之間的5後被用於

id transcode item 
1 CD50 Red 
2 TN30 Blue 
3 RC50 Green 
5 PT30 Blue 
6 AB60 White 
8 WC70 Blue 

您注意:您可以FIRST(Switch...取代MIN(Switch...這可以提高性能

0

你應該試試這個:

select 
    (select ID from sometable as t2 where t2.trans_code = t1.trans_code and t2.item = Min(t1.Item)), 
    t1.trans_code, 
    Min(t1.item) 
from sometable as t1 
group by trans_code 
order by 1 

由於您沒有指定顏色應該有偏愛,我的偏好設置按字母順序(藍,綠,紅,白)。這是我可以從您的預期產出中捕獲的帽子。

相關問題