这指的是我的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