oracle字典转换求解

可爱的小张666 2024-03-16 22:20:43

问题:在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;请教一下各位,感谢啦!

 

...全文
502 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
百态老人 2024-03-17
  • 打赏
  • 举报
回复

您可以使用SQL的JOIN语句来实现这个转换。
首先,您需要创建一个连接表A1和B1的查询,然后使用CASE语句或者DECODE函数来将s_km中的编码转换为对应的名称。这里是一个使用DECODE函数的示例:

SELECT b.s_id,
       b.s_name,
       LISTAGG(a.a_name, ',') WITHIN GROUP (ORDER BY a.a_id) AS subjects,
       b.s_age
FROM B1 b
CROSS JOIN A1 a
WHERE ',' || b.s_km || ',' LIKE '%,' || a.a_id || ',%'
GROUP BY b.s_id, b.s_name, b.s_age;
这个查询会将B1表中的s_km字段中的每个编码与A1表中的a_id字段进行匹配,并将匹配的a_name字段值聚合起来。LISTAGG函数用于将聚合的结果以逗号分隔的形式返回。

可爱的小张666 2024-03-17
  • 举报
回复
@百态老人 感谢,我在试试,麻烦啦
可爱的小张666 2024-03-18
  • 举报
回复
@百态老人 大神,你这个方法可行,感谢啦,大神平时就是简单的查询、更新一下。想提升一下oracle能力,大佬给点建议
太空漫步11 2024-03-17
  • 打赏
  • 举报
回复

您可以查找 “101.” ,替换成 “语文.”

可爱的小张666 2024-03-17
  • 举报
回复
@太空漫步11 数据量很大,就是没有百度到好方法来解决这个问题
oYueHen1 2024-08-15
  • 举报
回复
@可爱的小张666 oracle中将B1表行转列,匹配查询 ,将结果列转行
1. 解开用户 1 2. 取得系统当前时间 1 3. 任何含有空值的表达式计算结果都是空值和字符串拼接 1 4. distinct:select distinct deptno,job from emp; distinct是指deptno与job组合的唯一 2 5. 指定转义字符 2 6. order by 2 7. lower函数 2 8. subsr函数 2 9. chr、ascii函数将编码转换为字符或将字符转换为ASCII码 2 10. round四舍五入函数 2 11. to_char函数将日期或数字串转换为固定的格式 2 12. to_date函数将字符串转换为指定的日期格式 2 13. to_number函数 2 14. group by 2 15. 建表create 2 16. 修改表结构alter 3 17. 查看相关表、视图、字典、约束、索引等 3 18. 事务概念 4 19. 范式 4 20. pl_sql 4 1)需要在控制台打印数据的时候必须先执行:set serveroutput on; 4 2)简单例子: 4 3)打印乘法表 4 4)打印星号三角形 4 5)根据雇员工资分级显示税金。 4 6)使用CASE结构实现职务转换。 4 7)求:12+32+52+...+152 的值 4 8)输出一个空心三角形。 4 9)使用二重循环求1!+2!+...+10!的值。 4 21. 连表查询操作(员工-部门-薪水) 4 1) 表结构 4 2) 求部门中那些人的薪水最高 4 3) 求部门平均薪水的等级 5 4) 求部门平均的薪水等级 5 5) 雇员中有哪些人是经理 5 6) 不准用组函数,求薪水最高值 5 7) 求平均薪水最高的部门的部门编号 5 8) 求平均薪水最高的部门的部门名称 5 ①不建视图 5 ②使用视图 5 9) 求部门经理人中平均薪水最低的部门名称 6 10)求比普通员工最高薪水还要高的经理人名称 6 11)求薪水最高的前5名雇员 6

66,607

社区成员

发帖
与我相关
我的任务
社区描述
一个支持DBA沟通交流,分享技术的平台,各类数据库齐聚在此,百花齐放
社区管理员
  • IT邦德
  • java李杨勇
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎大家投稿,沟通交流,旨在构建一个DBA沟通的平台

更多内容请关注B站:搜索jeames007

微信公众号:IT邦德

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