次のクエリは、あなたの明確な色の最大数を与えるので、あなたが必要なフィールドを作成することができます:レコードを区別するためにはるかに容易になるので、私は、テーブルに_rankフィールドを追加します
select max(count(distinct color))
from MY_TABLE
group by CID;
:
その後、
alter table MY_TABLE add (_rank number(10));
update MY_TABLE set _rank = rank() over (partition over CID order by color);
alter table MY_TABLE add constraint ukx unique (CID, _rank);
各フィールドカラー2、カラー3、color4 ....
update MY_TABLE x
set x.color2 =
(select y.color
from MY_TABLE y
where x.CID = y.CID
and y._rank = 2)
where x._rank = 1;
と最後でのクエリを実行し、以下:
delete from MY_TABLE where _rank != 1;
alter table MY_TABLE drop (_rank);
クイックヒント:例のスペースを節約するために、テキストを選択し、ツールバーの{{}(コードサンプル)のようなボタンをクリックします。 –
テーブルに 'NewColor2'カラムがありますか?同じ 'CID'を持つ3行がある場合はどうなりますか? 「グリーン」行を削除するか、「ブルー」行を削除するかは、どのように分かりますか?あるいは、 'CID'がA12、' Color'がGreen、そして 'NewColor2'がBlueです。 –
NewColor2フィールドはまだテーブルには存在しません。これはクエリ中に作成する必要があります。 NewColor2に表示されている限り、 "Blue"または "Green"のいずれかを複製として削除することは許容されます。同じCIDと同じ色の複数の行はありません.CIDの重複がある場合、色は異なります。 – jensqox