Populate data based on columns in another table

问题

这指的是我之前的问题,我现在想做同样的事情,但从我的源表中引入 3 列。 名称、值和 ATY。 根据源表的值,应填充目标表中的正确列。 所以这意味着,与我之前的问题不同,我不想对列进行硬编码,因为表结构可能会发生变化,或者我在结构不同的不同表上使用相同的代码。

我的源表如下所示:

CREATE TABLE your_source (
  name  VARCHAR2(50),
  value VARCHAR2(50),
  ATY   VARCHAR2(50)
);
INSERT INTO your_source
  SELECT 'a+b+c+d', 'x2+x1+x3+x5','m1' FROM DUAL UNION ALL
  SELECT 'a+d+c',   'y7+y3+y4','m3'    FROM DUAL;

CREATE TABLE your_destination (
  name  VARCHAR2(50),
  value VARCHAR2(50),
  ATY   VARCHAR2(50),
  A VARCHAR2(20),
  B VARCHAR2(20),
  C VARCHAR2(20),
  D VARCHAR2(20)
);

目标表的结构可能会发生变化,因此可能会有更多列或更少列,因此无法硬编码。 此外,源表中的名称字段可能超过 4 个字段,并且可能类似于“A+B+C+X+H”.. 所以在这种情况下,只有 A、B、C 的值将被填充为 H 和 X不存在,但如果存在 H & X 确实存在的实例,它们将被填充。 希望这是有道理的。

输出:

SELECT * FROM your_destination

name        value        ATY   A  B  C  D
a+b+c+d   x2+x1+x3+x5     m1   x2 x1 x3 x5            
a+d+c'    y7+y3+y4        m3   y7  0  y4 y3
标签

更多相关内容:请点击查看