DECODE
函数将在这里帮助。我们检查Entity
是否为NULL,如果是,则从Group
列中获取值。我们对classification
也是这样做的,但在这里我们提供了字面值作为结果。我看到你也想在Term
专栏中做同样的事情?
CREATE TABLE t1 (
id NUMBER,
group_val VARCHAR2(3),
entity VARCHAR2(3),
percentage VARCHAR2(4),
long_term VARCHAR2(20),
short_term VARCHAR2(20)
);
INSERT INTO t1 VALUES (1, 'AAA', 'BBB', '99%', 'Long', NULL);
INSERT INTO t1 VALUES (2, 'CCC', 'DDD', '99%', NULL, 'Short');
INSERT INTO t1 VALUES (3, 'EEE', NULL, '99%', 'Long', NULL);
INSERT INTO t1 VALUES (4, NULL, 'FFF', '99%', NULL, 'Short');
COMMIT;
CREATE TABLE t2 AS
SELECT
id,
DECODE(entity, NULL, group_val, entity) AS name,
DECODE(entity, NULL, 'Group', 'Entity') AS classification,
percentage,
DECODE(long_term, NULL, short_term, long_term) AS term
FROM
t1;
SELECT * FROM t2;
ID NAME CLASSIFICATION PERCENTAGE TERM
---------- ---- -------------- ---------- --------------------
1 BBB Entity 99% Long
2 DDD Entity 99% Short
3 EEE Group 99% Long
4 FFF Entity 99% Short
如果你已经有了t2
表,然后:
INSERT INTO t2
SELECT
id,
DECODE(entity, NULL, group_val, entity) AS name,
DECODE(entity, NULL, 'Group', 'Entity') AS classification,
percentage,
DECODE(long_term, NULL, short_term, long_term) AS term
FROM
t1;
检查在SQLFiddle