【发布时间】:2013-03-25 03:14:02
【问题描述】:
在这个线程上,我有一个问题已成功回答。
searching for filtered duplicates in access query
现在我有第二个问题。也许有人可以帮助我。
我有一个如下所示的查询:
-
查询 A_Gravur:
SP1 | SP2 | SP3 64 | CB75000 | 3 64 | empty | D 70 | CB70010 | 1 70 | CB70010 | 1 119 | CB70050 | 5 119 | empty | D 165 | S15002 | Schalter 165 | S15002 | Schalter 194 | R70034 | Poti 194 | R10023 | Potentiometer 196 | S10063 | Schalter 196 | S10063 | Schalter 197 | S10063 | Schalter 198 | S10070 | 3 199 | CB75000 | 5
此查询被另一个查询过滤以检查重复项。 最终结果如下所示:
结果:
SP1 | SP2 | SP3
194 | R70034 | Poti 470k
194 | R10023 | Potentiometer
196 | S10063 | Schalter
197 | S10063 | Schalter
64 | CB75000 | 3
199 | CB75000 | 5
SQL 代码如下所示:
SELECT SP1, SP2, SP3
FROM A_Gravur
WHERE (SP1 IN
(SELECT SP1
FROM A_Gravur
WHERE SP3<>'D'
GROUP BY SP1
HAVING COUNT(*)>1)
OR SP2 IN
(SELECT SP2
FROM A_Gravur
WHERE SP3<>'D'
GROUP BY SP2
HAVING COUNT(*)>1))
AND CONCAT(CAST(SP1 AS CHAR),SP2,SP3) NOT IN
(SELECT CONCAT(CAST(SP1 AS CHAR),SP2,SP3)
FROM A_Gravur
WHERE SP3 <> 'D'
GROUP BY CONCAT(CAST(SP1 AS CHAR),SP2,SP3)
HAVING COUNT(*)>1)
AND SP3<>'D'
ORDER BY SP1, SP2;
现在是我的新问题:
我在查询 A_Gravur(SP4 和 SP5)中添加了 2 个新列并进行了重复搜索
SP1 | SP2 | SP3 | SP4 | SP5 |
194 | R70034 | Poti 470k |123546 |88859
194 | R10023 | Potentiometer |88859 |
196 | S10063 | Schalter |7773 |
197 | S10063 | Schalter |99992 |
64 | CB75000 | 3 |177777 |
199 | CB75000 | 5 |99999 |
说明:在 SP4 中总是有值(Materialnumber)。 现在,当我搜索重复项时,它应该只找到这个结果:
SP1 | SP2 | SP3 | SP4 | SP5 |
196 | S10063 | Schalter |7773 |
197 | S10063 | Schalter |99992 |
64 | CB75000 | 3 |177777 |
199 | CB75000 | 5 |99999 |
因为 SP5 (88859) 中的数字也在 SP4 (88859) 中,而 SP1 在两条记录中的数字相同 (194)
但如果看起来像这样则结果是正确的
SP1 | SP2 | SP3 | SP4 | SP5 |
194 | R70034 | Poti 470k |123546 |0000001
194 | R10023 | Potentiometer |88859 |
196 | S10063 | Schalter |7773 |
197 | S10063 | Schalter |99992 |
64 | CB75000 | 3 |177777 |
199 | CB75000 | 5 |99999 |
感谢您的帮助!!
【问题讨论】:
-
我刚刚看到你的问题,我不明白一件事。您是忽略 SP5 中的值还是必须将其与 SP4 中的值进行比较。
-
我必须将它与 sp4 进行比较 - 但前提是 sp1 在两行中都相同。当 sp1 有重复项时,Sp5 是我的程序中应该使用的首选材料编号
-
我还是有点不清楚。 0000001 在你的最后一张桌子上是从哪里来的?
-
我的列表是SAP系统生成的。 sp4 中的所有值都来自那里。我必须完成 sp5 列。首先,我在 sp1 中搜索重复项。之后,我在 SP2 中搜索重复项。之后,SP3 中所有带有字母 D 的重复项都将被删除。之后,将删除 sp1 和 sp2 中相同的所有重复项。最后,当 sp5 中的值在 sp4 中的任何位置(比较)时,它也应该从最终结果中删除 - 所以忘记值 0000001 它只是一个示例
-
对不起我的英语只是学校英语:-)