SQL语句查询

铁克禁卫军 2014-05-19 07:22:21
表A


需要通过查询得到表B结果集


求SQL语句
...全文
634 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
c_sdn_shang_bu_qi 2014-06-10
  • 打赏
  • 举报
回复
额,还应该把>=改为>
c_sdn_shang_bu_qi 2014-06-10
  • 打赏
  • 举报
回复
select role_id, parent_role_id,roleno,(case when len(roleno) >=2 then substr(roleno,0,len(roleno)-2) else null) as parent_roleno from tablename
皮特尔 2014-06-10
  • 打赏
  • 举报
回复
哦,楼上正解,应该用这个语法: (case when length(roleno) >2 then substr(roleno,0,length(roleno)-2) else null)
皮特尔 2014-06-10
  • 打赏
  • 举报
回复
很简单。看一下数据规律就会发现,PARTENT_ROLENO是ROLENO的字串,语句如下: select A.*,substr(ROLENO,-2) PARTENT_ROLENO from A;
lin6565278 2014-06-09
  • 打赏
  • 举报
回复
with temp as (select role_id, parent_role_id,roleno from tablename) select tp.role_id, tp.parent_role_id,tp.roleno,t.roleno as parent_roleno from temp tp left outer join tablename t on t.role_id = tp.parent_role_id
zhk383501372 2014-05-23
  • 打赏
  • 举报
回复
结果的PARENT_ROLENO这个栏位在2个基表栏位存在什么关系?你们回答都看懂了?
Mr_sqw 2014-05-19
  • 打赏
  • 举报
回复
with temp as (select role_id, parent_role_id,roleno from tablename) select tp.role_id, tp.parent_role_id,tp.roleno,t.roleno as parent_roleno from temp tp left outer join tablename t on t.role_id = tp.parent_role_id 试试看,应该可以的
CT_LXL 2014-05-19
  • 打赏
  • 举报
回复
引用 楼主 lfz860110 的回复:
表A 需要通过查询得到表B结果集 求SQL语句
with t as
 (select 10000 role_id, null parent_role_id, '01' roleno
    from dual
  union all
  select 100001 role_id, 10000 parent_role_id, '0101' roleno
    from dual
  union all
  select 100002 role_id, 10000 parent_role_id, '0102' roleno
    from dual
  union all
  select 100003 role_id, 100001 parent_role_id, '010101' roleno from dual)
select t2.*,
       (select roleno from t t1 where t1.role_id = t2.parent_role_id) parent_roleno
  from t t2

3,492

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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