查询1:
列名
Cust_ID,Cust_Name
cust1  ,name1
cust2  ,name1
cust3  ,name1
cust11 ,name2
cust12 ,name2  
............
就是一个人可能使用多个custID 一般是小于3个的,不确定就是1-3,正常情况是一个name对应一个custid
结果:name1 ,cust1 ,cust2 ,cust3
name2 ,cust11,cust12
............
我是想不出用sql直接输出的逻辑,不要用dbms_output,这样不是我的要求

解决方案 »

  1.   


    --Oracle10g以后,使用wmsys.wm_concat分析函数来处理:select Cust_Name, wmsys.wm_concat(Cust_ID) from tableA group by Cust_Name;
      

  2.   

    wmsys.wm_concat(Cust_ID)
    wmsys.wm_concat(Cust_ID); 好样的,长见识了
      

  3.   

    FYI: 问题13 ...
      

  4.   

    Oracle 支持 CASE WHEN ... THEN ... 分支语句的。
    --
    -- 表定义
    --
    CREATE TABLE Samples.dbo.Scores
    (
        Student     VARCHAR2(50),
        Course      VARCHAR2(50),
        Score       INT
    )--
    -- 静态SQL (横行转竖列)
    --
    SELECT
        Student,
        MAX(CASE WHEN Course='C#'   THEN Score END) AS C#,
        MAX(CASE WHEN Course='HTML' THEN Score END) AS HTML,
        MAX(CASE WHEN Course='Java' THEN Score END) AS Java
      FROM Scores
      GROUP BY Student
    /--
    -- 动态SQL (横行转竖列)
    --
    DECLARE v_SQL VARCHAR2(1000)
    BEGIN
        v_SQL = 'SELECT Student'    SELECT v_SQL=v_SQL || ', MAX(CASE WHEN Course=''' || Course || ''' THEN Score END) AS ' || Course
            FROM Scores
            GROUP BY Course    v_SQL=v_SQL || ' FROM Scores GROUP BY Student'    EXECUTE(v_SQL)
    END
    /
    没测试过,楼主试试