oracle 中,对指定的列值重复,只显示第一个值,其余列保持不变,要如何实现?高人赐教

表字段:ABCD123412343344abababcdabcd对指定的列(如:A,B)进行处理,有重复的列值,只显示第一个的值,其余为空(“”)结果如下:表字段:ABC... 表字段: A B C D
1 2 3 4
1 2 3 4
3 3 4 4
a b a b
a b c d
a b c d
对指定的列(如:A,B)进行处理,有重复的列值,只显示第一个的值,其余为空(“”)
结果如下:
表字段: A B C D
1 2 3 4
3 4
3 3 4 4
a b a b
c d
c d
展开
 我来答
随o天
2012-08-25 · TA获得超过3158个赞
知道大有可为答主
回答量:1740
采纳率:71%
帮助的人:2026万
展开全部
通过脚本来实现,比较直观容易理解。
declare
v_a char(1):='0';
v_b char(1):='0';
v_aa char(1):='';
v_bb char(1):='';
cursor c1 is select A,B,C,D from TAB order by A,B,C,D;
v c1%rowtype;
begin
open c1;
loop
fetch c1 into v;
exit when c1%notfound;
if v_a=v.a then v_aa:='';
else v_a:=v.a; v_aa:=v.a;
end if;
if v_b=v.b then v_bb:='';
else v_b:=v.b; v_bb:=v.b;
end if;
dbms_output.put_line(v_aa||' '||v_bb||' '||v.c||' '||v.d);
end loop;
close c1;
end;
woyaoaiaia
2012-08-25 · TA获得超过764个赞
知道小有建树答主
回答量:479
采纳率:0%
帮助的人:162万
展开全部
表名我为其命名为:a1

create view v_a1 as select rownum as rn,a1.* from a1;

select T.a,T.b,T.c,T.d
from (
select rn,a,b,c,d
from v_a1
where (rn,a,b) in (select min(rn) as rn,a,b
from v_a1
group by a,b)
union all
select rn,'' as a,'' as b,c,d
from v_a1 v1
where (rn,a,b) not in (select min(rn) as rn,a,b
from v_a1
group by a,b)
) T
order by T.rn;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式