有一张表A,一张表B表,B表的表名为A表的id+‘CU’,
怎么在子查询的时候拼接表名去做查询。
create table A(
id varchar2 not null,
name varchar2 not null,
PRIMARY KEY ("ID")
);
create table A.ID||'CU'(
id varchar2 not null,
num varchar2 not null,
primary key("id")
);
-- 想实现下方这样的动态查询(会报错)
select A.name ,
(select sum(num) from A.ID||'CU' )
from A ;
也有使用函数的方式来拼接表名,也行不同,请问各位大佬有什么方法可以解决。
这貌似只能用存储过程了
从题目描述来看,题主是有一个A表,A表中有很多id,然后每个id有一个对应的CU表。
首先第二步建表这个动作肯定是报错的,先假设你是手动拼接已经建好了,只是要看如何实现查询。
假设你这个数据是用于存储过程中,那么使用动态sql拼接sql的字符串再 execute immediate它就行了。
如果是想直接用于select查询出结果展示,那么有两个方案:
方案一:新建个函数,输入sql返回游标,使用select * from table(函数('sql'))的方式查询;
方案二:对于18c以上版本,可以使用多态表函数功能,和方案一相比 ,使用方式变成了 select * from 函数('sql')
不懂你这数据库为什么这样设计