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

问题描述 投票:0回答:1

请帮助我。目前,我正在处理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
------------------------
oracle plsql plsqldeveloper plsql-package
1个回答
0
投票

在分析功能(决定要提取哪个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>
© www.soinside.com 2019 - 2024. All rights reserved.