首页 > 数据库 >oracle-行转列

oracle-行转列

时间:2023-08-22 15:24:54浏览次数:53  
标签:编码 amb 转列 levels diagnosis oracle lvl id

现有由多个诊断组成的字段,诊断个数不定,由英文逗号拼接。
现需要将字段分解,每条诊断列为一行。

转化前字段如下图:
image

转化后字段如下图:
image

SQL实现方法如下:

select a.id,
substr(编码,instr(编码,',',1,levels.lvl)+1,instr(编码,',',1,levels.lvl+1)-(instr(编码,',',1,levels.lvl)+1)) as 诊断编码
from (select id,','||t.amb_diagnosis||',' 编码,length(t.amb_diagnosis)-nvl(length(replace(t.amb_diagnosis,',')),0)+1 cnt
from CLINIC_AMB_ORDER_LIST t) a,
(select rownum as lvl
from (select max(length(t.amb_diagnosis||',')-nvl(length(replace(t.amb_diagnosis,',')),0)) max_len
from CLINIC_AMB_ORDER_LIST t)
connect by level<=max_len
) levels
where levels.lvl<=a.cnt
and a.id=5393232
order by a.id

CSDN链接:https://blog.csdn.net/m0_47101212/article/details/126623186

标签:编码,amb,转列,levels,diagnosis,oracle,lvl,id
From: https://www.cnblogs.com/long-long-ago/p/17648591.html

相关文章

  • oracle 字符集
    oracle查看字符集select*fromv$nls_parameterswhereparameter='NLS_CHARACTERSET'select*fromv$nls_parameterswhereparameter='NLSNCHARCHARACTERSE'修改字符集步骤shutdownimmediate;startupmount;ALTERSESSIONSETSQL_TRACE=TRUE;ALTE......
  • oracle-体系结构
    18c、19c相当于12c的小版本Oracle服务器是由一个Oracle数据库和一个Oracle实例组成。Oracle实例是一种访问Oracle数据库的基本方式,总是打开一个且只打开一个数据库,由内存结构和进程结构组成。Oracle数据库是作为一个单元对待的数据的集合体,由三种文件类型组成。三类文件如下:......
  • C#和Oracle的交互
    1.安装Oracle,略。2.(非必要,全局用户也可)在sys下创建用户并授权session、createtable,createtablespace,createview,unlimitedtablespace。3.在VisualStudio创建项目,并将Oracle本地目录下的文件Oracle.DataAccess.dll复制到项目的exe所在目录下(bin/Debug/*)。4.......
  • oracle通配符大全
    用于where比较条件的有:等于:=、<、<=、>、>=、<>>,<:大于,小于>=.<=:大于等于,小于等于=:等于!=,<>,^=:不等于包含:in、notinexists、notexists范围:between...and、notbetween....and匹配测试:like、notlikeNull测试:isnull、isnotnull布尔链接:and、or、notOracle通配符:在where......
  • oracle中怎样把一个用户的所有table的select权限授给另外一个用户
    1、双击桌面sqldeveloper软件图标启动软件。2、新建数据库连接,填写登录数据库信息并选择相应角色进行登录。3、登录成功后先查询出hr用户下所有的表名,可直接通过dba_tables来进行查询。4、把查询权限赋给测试用户的方法有两种,一种为当用户下的表比较少的情况下可以直接通过gran......
  • 【oracle开发】wmsys.wm_concat介绍
    wmsys.wm_concat是一个聚合函数,其作用是将一列数据转换成一行,也就是我们常用的行专列,但是该函数是一个undocument函数,所以不推荐大家使用这个函数。因为在后续的版本中还提不提供这个函数都不好说呢。首先创建临时表和测试数据使用该函数,可以看到我们的按id做groupby,把name字......
  • oracle怎么表示当天零点,Oracle 取得当天0时0分0秒和23时59分59秒
    1.取得当天0时0分0秒selectTRUNC(SYSDATE)FROMdual;2.取得当天23时59分59秒(在当天0时0分0秒的基础上加1天后再减1秒)SELECTTRUNC(SYSDATE)+1-1/86400FROMdual;3.取得当前日期是一个星期中的第几天,注意:星期日是第一天selectto_char(sysdate,'D'),to_char(sysdate,'......
  • Oracle数据库经纬度坐标查询优化与结果错误原因分析、SQL中WKT超长文本字符串处理
    目录一、Oracle几何空间数据对象和其他数据库的差异二、Oracle查询一个经纬度坐标是否在边界内部2.1查询条件2.2查询结果错误,似乎是仅做了MBR匹配2.3错误原因2.4解决办法三、SQL中WKT超长文本在Oracle中如何编写3.1Oracle中执行含超长文本的SQL报错3.2使用CLOB无限拼接得到......
  • Oracle 分区表自动管理(待整理)
    原文-https://github.com/aws-samples/automate-table-partitioning-in-oracle-standard-edition/tree/main/partitions/scripts需要调整的地方有:1.droptable未释放垃圾空间2.未提及到收缩HWM释放空间partitions/scripts/partition_mgmt_tables.sql---partitions/sc......
  • Oracle table partition发展史
    ---Oraclepartition功能发展历程细节参考:https://www.oracle.com/docs/tech/partitioning-guide-2703320.pdf......