在另一个表的select子句中使用一个表的列值

托尼夫

我有一个名为:col_mapping的Oracle表,其中该表中的列具有来自另一个表的列的列值。

表的示例数据:col_mapping

    ID    DESCR     COL_VALS
------------------------------
    1     LABEL     COL_1
    2     NAME_ADDR COL_2:COL_3
    3     SALARY    COL4

基于上表,我现在想遍历col_mapping中的每个记录并将COL_VALS用作我的一部分

select COL_VALS from other_tab

显然,在有多个值(例如COL_2:COL_3)的地方,需要将':'替换为','

    SELECT COL_1 from other_tab;
    SELECT COL_2,COL_3 from other_tab;
    SELECT COL_4 from other_tab;
亚历克斯·普尔

您可以col_vals使用游标循环col_mappings在行上的游标循环内,根据值使用动态SQL生成并执行插入语句

begin
  for r in (select replace(col_vals, ':', ',') as cols from col_mapping) loop
    dbms_output.put_line('insert into staging_tab(' || r.cols || ')'
      || ' select ' || r.cols || ' from other_tab');
    execute immediate 'insert into staging_tab(' || r.cols || ')'
      || ' select ' || r.cols || ' from other_tab';
  end loop;
end;
/

光标仅获cols_val取值,用逗号替换冒号。生成的插入将修改后cols_val的插入用作插入列列表和选择列表-因为您说登台表将与other_tab结构匹配

dbms_output行只是为了您可以看到生成的语句-无需运行代码,set serveroutput on无论如何您都需要看到或等效看到它。启用该功能后,使用示例映射数据运行该块将显示:

PL/SQL procedure successfully completed.

insert into staging_tab(COL_1) select COL_1 from other_tab
insert into staging_tab(COL_2,COL_3) select COL_2,COL_3 from other_tab
insert into staging_tab(COL4) select COL4 from other_tab

您最终将获得来自每行的数据,这些数据other_tab分布在中的多行中staging_tab,并且具有许多空值。希望这就是您的意图。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

检查SELECT子句中另一个表中是否存在值

在Where子句中添加另一个表

在where子句中将一个表中的日期与另一个表中的列一起使用

使用ON子句中的OR在一个或另一列上的完整外部联接表

使用NOT IN的另一个表中的WHERE子句

Sql从表中选择但使用另一个表值作为where子句

如何以迭代方式针对另一个表中列的值提取SELECT语句中的计数?

当where子句使用另一个表中的项目时,Mysqli Select查询

如何使用MySQL将SELECT列用作WHERE子句来获取另一个表的行数

在一个表中使用整数值在另一个SQL表中查找值

在select子句的另一个案例中使用案例列

从另一个表的SELECT更新列

如果表中存在行,则在SQL中使用另一个表值

mysql从另一个表更新列值

从另一个表使用SELECT插入SQL

如何使用另一个表更新一个表的值

使用CSV从另一个表的B列获取表A列中的值

如何在 SELECT 语句中将一个表中的语句替换为另一个表?

MYSQL使用2列将一个表的值更新为另一个表限定的值

SQL Delete使用另一个表的值

使用另一个表中的值更新一个表上的列

在 MySQL 中如何使用基于另一个表的列值的名称连接表?

R:使用基于行和列的另一个表中的值填充表

根据行和列使用另一个表中的值填充表

使用另一个表的列数据为一个表中的列设置一个值

如何使用group by子句将记录从一个表插入另一个表

使用 where 子句 mysql 将数据从一个表传输到另一个表

从另一个表中使用“ COUNT”进行销售的SQL SELECT

FROM子句子查询从另一个表中添加一列