-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 
4

2 に答える 2

1

私があなたの質問を理解した場合 (おそらくそうではありません)、次のように重複の数を選択できます。

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ます。

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
于 2012-06-19T16:52:27.620 に答える
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
)
于 2012-06-19T18:09:52.940 に答える