我正在尝试执行查询并遇到一些问题。目标是找到制造商(idPub)正在使用的特定字段(Upc)的所有重复值。一个例子是制造商A使用upc 1010而制造商B也占用upc 1010.该数据存储在一个表中。到目前为止,我已经在下面提出了这个问题......
USE dbIdwWhseLC
SELECT tbItem.sUpc, COUNT(*) AS NumberofDups
FROM tbItem
WHERE sUpc IS NOT NULL
GROUP BY sUpc
HAVING COUNT(*) > 1
ORDER BY COUNT(*)
查询显示正确的数据,直到upc数字和计数,但是当尝试在查询中抛出制造商字段时,我也必须按制造商字段进行分组,这会导致结果丢失。我正在尝试查询返回如下所示的数据......
Upc idPub
1010 A
1010 B
任何建议都将不胜感激。感谢。
答案 0 :(得分:0)
您想要找到upc在具有多个条目的UPC列表中的所有条目,所以......
select sUpc, idPub
from tbItem
where sUpc in
(
Select tbItem.sUpc
From tbItem
Where sUpc is not null
Group by sUpc
Having COUNT(*)>1
)
答案 1 :(得分:0)
您必须加入主表,如下所示:
WITH Duplicates AS
(
Select tbItem.sUpc
,COUNT(*) As NumberofDups
From tbItem
Where sUpc is not null
Group by sUpc
Having COUNT(*)>1
)
SELECT
D.sUpc
,TI.idPub
,M.[name]
FROM
Duplicates AS D
INNER JOIN
tblItem AS TI
ON
D.sUpc = TI.sUpc
INNER JOIN
tbMfrReporting AS M
ON
TI.nIdPub = M.nIdPub
上面的Duplicates语句称为CTE。
我希望有所帮助。
灰
编辑:更新查询以根据评论添加更多表