表A 
a            b        c 
123、456      湖北            仙桃 
表B 
a                  b 
123                张三 
456        李四 求一查询语句将表A中的a字段的代码显示成对应的B表中的姓名(显示结果如下)。 张三、李四   湖北     仙桃  

解决方案 »

  1.   

     select  wmsys.wm_concat(b.a),a.b,a.c
       from a,b
      where instr(','||a.a||',',','||b.a||','  )>0
    group by a.a,a.b,a.c
      

  2.   

    同意楼上的语句,不过要把"wmsys.wm_concat(b.a)"中的"b.a"改成"b.b"
      

  3.   

    确实,应该是wmsys.wm_concat(b.b)
      

  4.   

    你参考一下这里:
    http://topic.csdn.net/u/20090714/17/cdb435a4-35d6-49dd-b605-1af64c3cb374.html上面的 贴 还是你发的。我回复了。 你整天 看不看自已的贴子回复啊。上个是update 。这个是select 你就不会了?
      

  5.   

    我的9I怎么没有wmsys.wm_concat这个函数啊,报错代码ora-00904
      

  6.   


    写一个函数getName  来返回 姓名列表 
    然后用  select getName (表A.a) ,b,c from  表A。 
    CREATE OR REPLACE FUNCTION getName  (CID IN VARCHAR2) RETURN VARCHAR2
    IS
        RESULT VARCHAR2(2000);
        TYPE NAMETAB IS TABLE OF 表B.bTYPE;
        NAME1 NAMETAB;
        CURSOR GETSINGERNAME IS
            SELECT b   FROM 表B
      WHERE  '%,'||CID|| ',%' LIKE '%,'||表B.a|| ',%'
     ;
    BEGIN
      OPEN GETSINGERNAME;
          FETCH GETSINGERNAME BULK COLLECT INTO NAME1;
      CLOSE GETSINGERNAME;
          FOR I IN 1..NAME1.COUNT LOOP
              RESULT := RESULT || NAME1(I)||',';
          END LOOP;
      RESULT := SUBSTR(RESULT,1,LENGTH(RESULT)-1);
      RETURN(RESULT);
    END;
    /