对联合主键的表。怎么把多行合并成列显示?如下所示:sNo gNo item   
1 1 桌子   
1 2 椅子
1 3 凳子
2 1 方巾
3 1 待定
4 1 待定
4 2 方巾要达到的效果
-----------------------------
sNo item
1 桌子,椅子,凳子
2 椅子
3 待定
4 待定,方巾表中 sno+gno是主键 求解。。谢谢!

解决方案 »

  1.   

    实测数据:CREATE TABLE T36
    (
        sNo NUMBER(2),
        gNo NUMBER(2),
        Item VARCHAR2(20)
    );
    INSERT INTO T36 VALUES(1, 1, '桌子');
    INSERT INTO T36 VALUES(1, 2, '椅子');
    INSERT INTO T36 VALUES(1, 3, '凳子');
    INSERT INTO T36 VALUES(2, 1, '方巾');
    INSERT INTO T36 VALUES(3, 1, '待定');
    INSERT INTO T36 VALUES(4, 1, '待定');
    INSERT INTO T36 VALUES(4, 2, '方巾');
    实测结果:
      

  2.   

    行转列基本上都是 group by与单分组函数结合。
      

  3.   

    oracle中这个wm_concat函数好啊,ms sql server中这种题就相对麻烦了
      

  4.   

    SELECT sNo,wm_concat(Item) as Item 
    FROM table
    GROUP BY sNoOracle9i添加 wm_concat函数 行列转化函数
      

  5.   

    http://www.hake.cc/a/shujuku/Oracle/2011/0921/23209.html
    看看这个,加深一些理解!