1

PROMOTIONテーブルとテーブルの2つのテーブルがありPRIZEます。このPRIZEテーブルには、主キーPRIZEIDと他の 2 つのフィールド (COSTおよび) が含まれていPRIZENAMEます。このテーブルには、いくつかのフィールドと、2 つのテーブルをリンクするPROMOTION外部キーが含まれています。PRIZEID

現在、私のPRIZEテーブルには重複したエントリが含まれています (重複とは、同一のコストと賞品名を持つすべての行です)。私がやりたいことは、PRIZEテーブル内のすべての重複を見つけて、すべての重複を削除し (基本的に、コストと賞品名のペアごとに 1 つの一意の行を残す)、PROMOTIONこれらの変更を反映するためにテーブル内の外部キーを更新することです。

たとえば、私のプライズテーブルには

prizeid             cost             prizename
1                   100                TV
2                    50                Computer
3                   100                TV
4                    50                Computer
5                    200               Book

そしてプロモーションテーブルには次のような行が含まれています

promotionid ...  prizeid
1                  1
2                  3
3                  2

賞品表はこうなってほしい

prizeid             cost             prizename
1                   100                TV
2                    50                Computer
5                    200               Book

プロモーションテーブルは次のようになります

promotionid ...  prizeid
1                  1
2                  1
3                  2

どのように進めるか完全にはわかりません。何か案は?

前もって感謝します!

4

2 に答える 2

0

すべての cost + PrizeName の組み合わせの最初のインスタンスのみを保持したいとします。これを使用できます:

UPDATE Promotion
SET PrizeId = A.FirstPrizeIdPerCostPrizeNameCombination

FROM
    Promotion AS P 
    INNER JOIN 
    (
    SELECT 
        PrizeId, Cost, PrizeName,
        [FirstPrizeIdPerCostPrizeNameCombination] = First_Value(PrizeId) OVER (PARTITION BY Cost,PrizeName ORDER BY PrizeId)
    FROM
        Prize
    ) AS A ON A.PrizeId = P.PrizeId 
于 2013-08-16T20:35:31.140 に答える