第一个sql语句可以用如下:
(select a.dhhm,a1.xm1||a1.xxk,a.bz from a,a1 where a.dhhm=a1.dhhm1) union (select a.dhhm,a2.xm2||a2.xxk,a.bz from a,a2 where a.dhhm=a2.dhhm2);不过加入字段多,数据多,且如果包括a1,a2,a3,a4,a5,a6很多字表,是不是速度很慢呢,有没有更好的sql语句呢
(select a.dhhm,a1.xm1||a1.xxk,a.bz from a,a1 where a.dhhm=a1.dhhm1) union (select a.dhhm,a2.xm2||a2.xxk,a.bz from a,a2 where a.dhhm=a2.dhhm2);不过加入字段多,数据多,且如果包括a1,a2,a3,a4,a5,a6很多字表,是不是速度很慢呢,有没有更好的sql语句呢
from a,
(select DHHM1,wm_concat(xm1||'|'||xxk) xx from (
select DHHM1, XM1, XXK from a1
union all
select DHHM2 DHHM1, XM2 XM1, XXK from a2)
group by DHHM1) b
where a.dhhm=b.dhhm
select DHHM,XM1||'|'||XXK col2,BZ
from a,a1
where a.DHHM=a1.DHHM1
union all
select DHHM,XM2||'|'||XXK col2,BZ
from a,a2
where a.DHHM=a2.DHHM2
--2.先自己写过函数然后再语句中调用
--创建个视图
create or replace view test
as
select DHHM,XM1||'|'||XXK col2,BZ
from a,a1
where a.DHHM=a1.DHHM1
union all
select DHHM,XM2||'|'||XXK col2,BZ
from a,a2
where a.DHHM=a2.DHHM2create or replace function my_concat(var_col varchar2)
return varchar2
is
v_col varchar2(4000);
begin
for cur in (select col2 from test where dhhm=var_col)
loop
v_col:=v_col||cur.col2||';';
end loop;
v_col:=rtrim(v_col,',');
return v_col;
end;--最后从视图中读取数据
select DHHM,my_concat(col2),BZ
FROM TEST;
from
(select dhhm,a1.xm1||'|'||a1.xxk un from a1
union all
select dhhm,xm2||'|'||xxk un from a2) b,a
where a.dhhm=b.dhhm
group by a.dhhm,a.bz