度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle中自动编码 [打印本页]

作者: 张兴康    时间: 2020-2-21 19:59
标题: oracle中自动编码
现有如下图所示一张表:

最终要实现下面这样的编码结果:
  1. --要求最终的结果,自动编码
  2. ID p_id NAME CODE
  3. 1 1 -1  A   03
  4. 2 2 1   B1  0301
  5. 3 5 2   C1  030101
  6. 4 6 2   C2  030102
  7. 5 3 1   B2  0302
  8. 6 7 3   D1  030201
  9. 7 4 1   B3  0303
复制代码


实现代码如下:
  1. select id,
  2.        p_id,
  3.        name,
  4.        decode(p_id,
  5.               -1,
  6.               code,
  7.               code ||
  8.               replace(substr(sys_connect_by_path(pos, '.'),
  9.                              instr(sys_connect_by_path(pos, '.'), '.', 1, 2)),
  10.                       '.',
  11.                       '0')) new_code
  12.   from (select id,
  13.                p_id,
  14.                name,
  15.                last_value(code ignore nulls) over(order by rownum) code,
  16.                row_number() over(partition by p_id order by rownum) pos
  17.           from t_test)
  18. start with p_id = -1
  19. connect by prior id = p_id;
复制代码



作者: 万望    时间: 2020-2-21 21:39

作者: 张兴康    时间: 2020-2-22 12:54
万望 发表于 2016-3-21 21:39






欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2