我希望基于名为“CID”的字段(customer_Id字段)从表中删除重复项但是我需要保留要删除的行中的值并将其作为新字段添加到剩余的uniqe行/条目。
EG:
CID颜色
A12蓝色
A12绿色
A13红色
看起来像这样:
CID Color NewColor2
A12蓝绿色
A13红色
答案 0 :(得分:0)
以下查询将为您提供最大数量的不同颜色,因此您可以创建必填字段:
select max(count(distinct color))
from MY_TABLE
group by CID;
我会在表格中添加一个_rank字段,因此区分记录要容易得多:
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);
然后对每个字段color2,color3,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);