66,607
社区成员




问题:在excel表中有数据需要转换,故想用数据库来操作,实现转换,101 ,103 ,105 转换对应编码名称,语文,英语,生物。因每行存放的数据不一致,无法查找替换。
有表A1,结构如下,a_id,a_name varchar, 存放数据如下:101 语文,102 数学,103 英语,104 化学, 105 生物, 106 物理,有业务表B1,结构如下,s_id,s_name,s_km,s_age 存放数据如下:101001 张三 102,103,106 18 ; 1010012 李四 106,101,104,102,20;需求是把业务表中的s_km转换成字典对应的名称,如101001 张三 数学,英语,物理 18; 1010012 李四 物理,语文,化学,数学,20;请教一下各位,感谢啦!
WITH CCC AS
(SELECT T.S_ID,
T.S_NAME,
TRIM(REGEXP_SUBSTR(T.S_KM, '[^,]+', 1, LEVEL)) AS SPLIT_VALUE,
T.S_AGE
FROM BBB T
CONNECT BY REGEXP_SUBSTR(T.S_KM, '[^,]+', 1, LEVEL) IS NOT NULL
AND PRIOR T.ROWID = T.ROWID
AND PRIOR DBMS_RANDOM.VALUE IS NOT NULL
ORDER BY T.ROWID, LEVEL)
SELECT C.S_ID, C.S_NAME, to_char(wm_concat(A.A_NAME)), C.S_AGE
FROM CCC C, AAA A
WHERE A.A_ID = C.SPLIT_VALUE
GROUP BY C.S_ID, C.S_NAME, C.S_AGE;