我需要帮助查询表,以查找与ITEM列中的值匹配的TRANS_CODE的不同记录。任何帮助都会非常感激。
以下是该表的示例。
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:仅显示蓝色的记录 具有ITEM,绿色,红色和白色的重复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 :(得分:0)
您可以使用开关将颜色映射到Numbers。然后使用连接在一起的两个内联查询,您可以得到您正在寻找的答案。
从技术上讲,你不需要使用开关,因为颜色是按字母顺序排列的,但万一你的实际值不是
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
注意:您可以将MIN(Switch...
替换为FIRST(Switch...
,这可能会提高效果
答案 1 :(得分: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
由于您没有指定哪种颜色应该优先,我按字母顺序设置首选项(蓝色,绿色,红色和白色)。我可以从你的预期输出中捕获。