0

请帮我。目前我正在研究 pl/sql 程序。在运动表中有 ID,对于同一个 ID 有多个代码。我需要拆分这些多个代码并将它们作为代码 1、代码 2、代码 3 插入到学生表中。

源表

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
------------------------
4

1 回答 1

1

在分析函数(决定CODEn要获取哪个)和聚合的帮助下,您将拥有这个(假设每个最多有 3 个代码ID)。

样本数据:

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>
于 2020-03-26T16:40:36.527 回答