使用pl / sql或sql在学生表的多个列中拆分数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用pl / sql或sql在学生表的多个列中拆分数据相关的知识,希望对你有一定的参考价值。

请帮助我。目前,我正在处理pl / sql过程。在运动表中有ID,而相同的ID有多个代码。我需要拆分这多个代码,并将它们作为code1,codes2,code3插入到学生表中。

源表

ID  CODE
----------
222 4wta
----------
223 5qer
----------
222 5qer
-----------
224 3der
---------

所需表

ID  CODE1   CODE2   CODE3
-------------------------
222 4wta    5qer    NULL
-------------------------
223 5qer    NULL    NULL
------------------------
224 3der    NULL    NULL
------------------------
答案

在分析功能(决定要提取哪个CODEn)和聚合的帮助下,您将拥有此功能(假定每个ID最多有3个代码)。

样本数据:

SQL> select * From src;

        ID CODE
---------- ----
       222 4wta
       223 5qer
       222 5qer
       224 3der

插入:

SQL> insert into trg (id, code1, code2, code3)
  2  with temp as
  3    (select id, code,
  4       row_number() over (partition by id order by code) rn
  5     from src
  6    )
  7  select id,
  8    max(case when rn = 1 then code end) code1,
  9    max(case when rn = 2 then code end) code2,
 10    max(case when rn = 3 then code end) code3
 11  from temp
 12  group by id;

3 rows created.

结果:

SQL> select * From trg;

        ID CODE1 CODE2 CODE3
---------- ----- ----- -----
       222 4wta  5qer
       223 5qer
       224 3der

SQL>

以上是关于使用pl / sql或sql在学生表的多个列中拆分数据的主要内容,如果未能解决你的问题,请参考以下文章

Pl/SQL 拆分表

来自两个表的 PL/SQL 唯一列标识

T-SQL基于分隔符拆分列并将拆分后的字符串数组输入到多个表列中

PL/SQL 字符串操作

BigQuery SQL 中跨多个字段的拆分函数

PL/SQL 触发器插入下一个值