表连接不显示相同值得列

db2_aixer 2013-07-05 01:39:57
请教下:
如:
create table ttt
(
o number,
n varchar2(22)
);


create table sub_ttt
(
nn varchar2(33),
fo number
);

insert into ttt values(1,'aaa');
insert into sub_ttt values('sub1',1);
insert into sub_ttt values('sub2',1);
insert into sub_ttt values('sub3',1);



SQL> select t1.o,t1.n ,t2.nn
2 from
3 ttt t1,sub_ttt t2 where t1.o=t2.fo order by 3;

O N NN
---------- ---------------------- ---------------------------------
1 aaa sub1
1 aaa sub2
1 aaa sub3


我现在想这样显示,请教下怎么写:

O N NN
---------- ---------------------- ---------------------------------
1 aaa sub1
sub2
sub3
...全文
156 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
白脑哥 2013-07-05
  • 打赏
  • 举报
回复
学习了
shy315 2013-07-05
  • 打赏
  • 举报
回复
引用 1 楼 u010412956 的回复:
应该还有更好的方法,刚睡醒,只能想个土办法:
select decode(lag(t1.o) over(partition by o, n order by nn),
              t1.o,
              null,
              t1.o) o,
       decode(lag(t1.n) over(partition by o, n order by nn),
              t1.n,
              null,
              t1.n) n,
       t2.nn
  from ttt t1, sub_ttt t2
 where t1.o = t2.fo
 order by t1.o, t1.n, t2.nn;
或者用row_number over=1判断, 要不就用not exists判断。
db2_aixer 2013-07-05
  • 打赏
  • 举报
回复
thanks
u010412956 2013-07-05
  • 打赏
  • 举报
回复
应该还有更好的方法,刚睡醒,只能想个土办法:
select decode(lag(t1.o) over(partition by o, n order by nn),
              t1.o,
              null,
              t1.o) o,
       decode(lag(t1.n) over(partition by o, n order by nn),
              t1.n,
              null,
              t1.n) n,
       t2.nn
  from ttt t1, sub_ttt t2
 where t1.o = t2.fo
 order by t1.o, t1.n, t2.nn;

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧