如何在oracle中有条件地插入数据?
How to insert data conditionally in oracle?
我有 table t1。我想根据另一个 tables t2、t3 等
的查询结果将数据插入此 table
我是这样做的-
Insert into table_t1 (column1,column2,column3,column4)
Select col1, col2, Have_to_check_condition_here_and_then_insert_value, Have_to_check_condition_here_and_then_insert_value from table_t2
where condition;
我面临的问题是如何将来自 table_t3 和 table_t4 的值放入 column3 和 column4 中,这也是有条件的,这意味着如果某些事情是真的,那么我会把value_something 否则 value_another_thing。 Table 第三个和第四个与特定列上的第二个 table 相连。
根据您发布的信息,应该是这样的:
INSERT INTO table_t1 (col1,
col2,
col3,
col4)
SELECT b.col1,
c.col2,
CASE
WHEN b.amount > 1000 THEN c.one_value
ELSE c.some_other_value
END AS col3,
--
CASE
WHEN c.TYPE = 'A' THEN b.some_column
WHEN c.TYPE IN ('B', 'C') THEN c.another_column
ELSE NULL
END AS col4
FROM table_t3 b JOIN table_t4 c ON b.id = c.id
我有 table t1。我想根据另一个 tables t2、t3 等
的查询结果将数据插入此 table我是这样做的-
Insert into table_t1 (column1,column2,column3,column4)
Select col1, col2, Have_to_check_condition_here_and_then_insert_value, Have_to_check_condition_here_and_then_insert_value from table_t2
where condition;
我面临的问题是如何将来自 table_t3 和 table_t4 的值放入 column3 和 column4 中,这也是有条件的,这意味着如果某些事情是真的,那么我会把value_something 否则 value_another_thing。 Table 第三个和第四个与特定列上的第二个 table 相连。
根据您发布的信息,应该是这样的:
INSERT INTO table_t1 (col1,
col2,
col3,
col4)
SELECT b.col1,
c.col2,
CASE
WHEN b.amount > 1000 THEN c.one_value
ELSE c.some_other_value
END AS col3,
--
CASE
WHEN c.TYPE = 'A' THEN b.some_column
WHEN c.TYPE IN ('B', 'C') THEN c.another_column
ELSE NULL
END AS col4
FROM table_t3 b JOIN table_t4 c ON b.id = c.id