表有dm、updm 两个字段如下:
dm updm
0001
0002 0001
0003 0001
0004 0002
0005 0004
0010
0011 0010
0012 0010
期望输出:
dm updm jb
0001 1
0002 0001 2
0004 0002 3
0005 0004 4
0003 0001 2
0010 1
0011 0010 2
0012 0010 2
能用一句SQL写出吗?如何写?
dm updm
0001
0002 0001
0003 0001
0004 0002
0005 0004
0010
0011 0010
0012 0010
期望输出:
dm updm jb
0001 1
0002 0001 2
0004 0002 3
0005 0004 4
0003 0001 2
0010 1
0011 0010 2
0012 0010 2
能用一句SQL写出吗?如何写?
用start with配合level可以生成JB,我去写个语句测试下
(SELECT '0001' dm, NULL updm
FROM DUAL
UNION ALL
SELECT '0002', '0001'
FROM DUAL
UNION ALL
SELECT '0003', '0001'
FROM DUAL
UNION ALL
SELECT '0004', '0002'
FROM DUAL
UNION ALL
SELECT '0005', '0004'
FROM DUAL
UNION ALL
SELECT '0010', NULL
FROM DUAL
UNION ALL
SELECT '0011', '0010'
FROM DUAL
UNION ALL
SELECT '0012', '0010'
FROM DUAL)SELECT a.*, LEVEL jb
FROM a
START WITH updm IS NULL
CONNECT BY PRIOR dm = updm
结果
Row# DM UPDM JB1 0001 1
2 0002 0001 2
3 0004 0002 3
4 0005 0004 4
5 0003 0001 2
6 0010 1
7 0011 0010 2
8 0012 0010 2