关于Oracle中startwith递归以及ligstagg拼接名

关于Oracle中startwith递归以及ligstagg拼接名

select ( listagg(表中列名一'/') within group(order by rowNu desc) ) from 
( select  表中列名一,rowNum rowNu  from TBC_CARGO_LOCATION_INFO
where 1 = 1
start with 子列名一= '传入一个值'    
connect by prior 父列名= 子列名)

上述代码中 start with … connect by prior … 是oracle中的递归调用。上述条件是查询该数据的所有上级。如果想查一个数据的所有下级只需要把connect by prior 后的条件调换位置即可,

如果没记错的话rowNum 是oracle有而mysql 没有的 这里就不介绍了,百度一下就找到了。
listagg可以给一个字段后拼接一个字符串
listagg(一个字段,‘自定义一个符号’) within group(order by 一个字段) 。
在上面sql语句中,为了能够逆序输出这个结果,我才用到了rowNum,对表进行了逆序排序。


版权声明:本文为z110655原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。