根据另一个表中的列填充数据

时间:2017-05-26 14:40:14

标签: sql oracle

这指的是我的previous question我现在想要做同样的事情,但从我的源表中引入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

0 个答案:

没有答案