MS Access查询显示与另一列中的值匹配的重复记录
问题描述:
我需要帮助通过与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
答
您可以使用开关将您的颜色映射到数字。然后使用两个内联查询连接在一起,您可以得到您正在寻找的答案。
从技术上讲,你不需要使用开关,因为颜色是字母顺序,但以防万一你的真实值不
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...
这可以提高性能
答
你应该试试这个:
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
由于您没有指定颜色应该有偏爱,我的偏好设置按字母顺序(蓝,绿,红,白)。这是我可以从您的预期产出中捕获的帽子。
所以你想选择第一个唯一的'代码`由`ID`命令? – 2011-04-15 18:09:53