2012-06-19 6 views
-1

이 쿼리는 POG.Dbkey와 관련된 제품의 양을 반환합니다. 어떤 제품이 동일한 제품인지, 어떤 제품이 동일한 제품인지를 비교하려면 모든 중복 제품을 찾아야합니다. 나는 당신의 질문을 이해하면 각 진열 설계도중복 검색 및 비교

select pog.DBKey 
,Count(pos.DBParentProductKey) 
as Total 
from ix_spc_planogram as pog with (nolock) 
, ix_spc_position as pos with (nolock) 
where pog.dbkey = pos.dbparentplanogramkey 
and pog.Value4= 358 
group by pog.dbkey 
+3

질문은 무엇입니까 :

여기에 내가 선택해야 중복있을 때마다 내가 사용하는 템플릿은/테이블에서 삭제입니까? 너 뭐 해봤 니? 작동하지 않는 것은 무엇입니까? – Oded

+0

정말 원하는 것은 무엇입니까? –

답변

1

에서

--Total 제품 (prolly되지 않음),이 같은 중복의 수를 선택할 수 있습니다

select pog.DBKey 
,Count(pos.DBParentProductKey) as 'Total' 
,Count(pog.DBKey) - 1 as 'Number Duplicates' 
as Total 
from ix_spc_planogram as pog with (nolock) 
, ix_spc_position as pos with (nolock) 
where pog.dbkey = pos.dbparentplanogramkey 
and pog.Value4= 358 
group by pog.dbkey 

또는 HAVING로 제한 like :

select pog.DBKey 
,Count(pos.DBParentProductKey) as 'Total' 
as Total 
from ix_spc_planogram as pog with (nolock) 
, ix_spc_position as pos with (nolock) 
where pog.dbkey = pos.dbparentplanogramkey 
and pog.Value4= 358 
group by pog.dbkey 
having count(pog.dbkey) > 1 
0

이렇게하면 시작할 수 있습니다.

Select * 
--DELETE 
FROM Table 
WHERE Table.TableID IN 
(
    -- List 1 - all rows that have duplicates 
    SELECT t1.TableID 
    FROM Table t1 
    WHERE Exists 
    (
     SELECT UniqueField1, UniqueField2, Count(TableID) 
     FROM Table 
     WHERE Table.UniqueField1 = t1.UniqueField1 
     AND UniqueField2 = t1.UniqueField2 
     GROUP BY UniqueField1, UniqueField2 
     HAVING Count(TableID) > 1 
    ) 
) 
AND TableID NOT IN 
(
    -- List 2 - one row from each set of duplicate 
    SELECT Max(TableID) 
    FROM Table t2 
    WHERE Exists 
    (
     SELECT UniqueField1, UniqueField2, Count(TableID) 
     FROM Table 
     WHERE UniqueField1 = t2.UniqueField1 
     AND UniqueField2 = t2.UniqueField2 
     GROUP BY UniqueField1, UniqueField2 
     HAVING Count(TableID) > 1 
    ) 
    GROUP BY UniqueField1, UniqueField2 
)