这段ORACLE实现的功能,怎么用POSTGRESL实现。

m0_37935446 2017-03-17 03:15:09
create table t(id int, a int, b int, c varchar(10), d varchar(10));


insert into t values(1, 1, 3, 'xx', 'xx');
insert into t values(2, 1, 2, 'xx', 'xx');
insert into t values(3, 2, 4, 'xx', 'xx');
insert into t values(4, 2, 1, 'xx', 'xx');



select id, a + level - 1 a, b, c, d from t
connect by level <= t.b
and prior dbms_random.value is not null
and prior t.rowid = t.rowid;


ID A B C D
---------- ---------- ---------- ---------- ----------
1 1 3 xx xx
1 2 3 xx xx
1 3 3 xx xx
2 1 2 xx xx
2 2 2 xx xx
3 2 4 xx xx
3 3 4 xx xx
3 4 4 xx xx
3 5 4 xx xx
4 2 1 xx xx

...全文
120 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chawww 2017-03-18
  • 打赏
  • 举报
回复
WITH RECURSIVE test(id,a,b,c,d) AS ( SELECT j.id,j.a,j.b,j.c,j.d,1 r from ab j UNION ALL SELECT t.id,t.a+1 a,t.b,t.c,t.d,t.r+1 r from test t WHERE t.r <t.b --递归子句 ) SELECT * from test ORDER BY id,a;
李察德-泰森 2017-03-18
  • 打赏
  • 举报
回复
没看懂,赫赫。level 是什么
m0_37935446 2017-03-17
  • 打赏
  • 举报
回复

956

社区成员

发帖
与我相关
我的任务
社区描述
PostgreSQL相关内容讨论
sql数据库数据库架构 技术论坛(原bbs)
社区管理员
  • PostgreSQL社区
  • yang_z_1
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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