报错说我查的字段不在表中(标识符无效)。
select LYO_3_DB5_DBD84 from (select table_name from USER_TABLES where TABLE_NAME = (SELECt * FROM(SELECt concat(demo,'HISTORY') FROM HISTORY order by recordtime)where rownum=1));
表名为一个查询的结果:A1_LJ_HISDATA_LYO_3_HISTORY ,这个也是在数据库中存在的表,我搜索的字段也是该表存在的。
想知道为什么表名为查询结果后就不能正常执行查询操作了呢?应该怎么处理才能实现拼接后的字符串作为表名正常查询。
PS:因为表名不确定,所以想通过查询其他表的某一字段来拼接字符串凑成表名,然后查询想要的字段结果。
SQL求助: 在写SQL语句时,我想要调用其他表查询的结果拼接上一个字符串作为表名,但是执行语句时,
答案:2 悬赏:0 手机版
解决时间 2021-12-30 15:44
- 提问者网友:心牵心
- 2021-12-29 20:55
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-12-29 22:14
declare
v_tbl_nm varchar2(30);
v_sql varchar2(4000);
v_result varchar2(4000);
begin
select table_name into v_tbl_nm from USER_TABLES where TABLE_NAME = (SELECt * FROM(SELECt concat(demo,'HISTORY') FROM HISTORY order by recordtime)where rownum=1);
v_sql :='select LYO_3_DB5_DBD84 from ' || v_tbl_nm ;
execute immediate v_sql into v_result;
dbms_output.put_line(v_result);
end;
v_tbl_nm varchar2(30);
v_sql varchar2(4000);
v_result varchar2(4000);
begin
select table_name into v_tbl_nm from USER_TABLES where TABLE_NAME = (SELECt * FROM(SELECt concat(demo,'HISTORY') FROM HISTORY order by recordtime)where rownum=1);
v_sql :='select LYO_3_DB5_DBD84 from ' || v_tbl_nm ;
execute immediate v_sql into v_result;
dbms_output.put_line(v_result);
end;
全部回答
- 1楼网友:廢物販賣機
- 2021-12-29 23:03
sql server: --1. select a.xsgg,count(a.xsgg) num from ( select substring(xsgg,1,charindex('*',xsgg,0)-1) as xsgg from 表名) a group by a.xsgg order by num desc; --2. select b.xsgg,count(b.xsgg) num from ( select left(xsgg,charindex('*',xsgg))+left(substring(xsgg,charindex('*',xsgg)+1,len(xsgg)),charindex('*',substring(xsgg,charindex('*',xsgg)+1,len(xsgg)))-1) xsgg from 表名 )b group by b.xsgg order by num desc;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯