第一个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语句呢

解决方案 »

  1.   

    select a.dhhm,b.xx,a.bz
      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
      

  2.   

    --1
    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;
      

  3.   

    可以在你的外面在用wm_concat套用
      

  4.   

    select a.dhhm,a.bz,wm_concat(b.un) un
    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