oracle 横向分区,请教怎么把这纵向的数据转成横向呀

SQL codeSELECT LEVEL,

REGEXP_SUBSTR

('first,second,third',

'[^,]*',

NVL (REGEXP_INSTR ('first,second,third',

',',

1,

DECODE (LEVEL - 1,

0, NULL,

LEVEL - 1

)

),

0

)

+ 1

) split_result

FROM DUAL

CONNECT BY NVL (REGEXP_INSTR ('first,second,third',

',',

1,

DECODE (LEVEL - 1, 0, NULL, LEVEL - 1)

),

1

) > 0

------解决方案--------------------SQL codewith tb1 as(

select 61520528 id,12 classid,0 a,0 b,0 c from dual union all

select 61520528 id,13 classid,0 a,0 b,0 c from dual union all

select 61520528 id,14 classid,1 a,1 b,5 c from dual

)

select id,

max(decode(classid,12,a,0)) a12,max(decode(classid,12,b,0)) b12,max(decode(classid,12,c,0)) c12,

max(decode(classid,13,a,0)) a13,max(decode(classid,13,b,0)) b13,max(decode(classid,13,c,0)) c13,

max(decode(classid,14,a,0)) a14,max(decode(classid,14,b,0)) b14,max(decode(classid,14,c,0)) c14

from tb1

group by id;

ID A12 B12 C12 A13 B13 C13 A14 B14 C14

---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------

61520528 0 0 0 0 0 0 1 1 5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用以下步骤将 MySQL 数据格式换为 Oracle 数据格式: 1. 导出 MySQL 数据库中的数据为 SQL 文件。你可以使用以下命令导出: ``` mysqldump -u 用户名 -p 密码 数据库名 > 导出文件名.sql ``` 2. 打开导出的 SQL 文件,用文本编辑器查找并替换以下内容: ``` ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ``` 替换为: ``` STORAGE (BUFFER_POOL DEFAULT) CHARSET AL32UTF8; ``` 这将更改表的存储引擎及字符集。 3. 将 SQL 文件导入到 Oracle 数据库中。你可以使用以下命令导入: ``` sqlplus 用户名/密码@数据库名 @导入文件名.sql ``` 4. 确保在 Oracle 数据库中创建了与 MySQL 数据库相同的表和列,以便导入数据。 如果表的列名在 Oracle 中是关键字(如 DATE),则需要用双引号将列名括起来。 如果表中有自增列(如 AUTO_INCREMENT),则需要在 Oracle 中创建序列并使用触发器来模拟自增列。 如果表中有 ENUM 类型的列,则需要在 Oracle 中创建对应的 CHECK 约束。 如果表中有 SET 类型的列,则需要在 Oracle 中创建对应的多选列表。 5. 将 MySQL 数据库中的数据导入到 Oracle 数据库中。你可以使用以下命令导入: ``` mysql -u 用户名 -p 密码 数据库名 -e "SELECT * FROM 表名" | awk '{gsub(/\t/,","); print}' | sqlldr 用户名/密码@数据库名 control=控制文件名 ``` 其中,控制文件是一个包含导入规则的文件,它告诉 SQL*Loader 如何将数据导入到 Oracle 中。你需要编写自己的控制文件以适应你的数据格式。 这些步骤应该可以帮助你将 MySQL 数据库中的数据格式换为 Oracle 数据库中的数据格式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值