select cargo_type, count(goods_code) from ehu_goods group by cargo_type;table中goods_code是主键,cargo_type指的是货物类型,每个商品都对应一种货物类型,现在想根据货物类型进行分组,
查询的结果通过拼接商品代码,加入cargo_type为文件,包裹两种,则结果可以为TYPE    goods_codes
 
文件    表中的所有文件类型的goods_code,中间用逗号分隔。
包裹    表中的所有包裹类型的goods_code,中间用逗号分隔。

解决方案 »

  1.   

    10g或者以上,使用wm_concat
    WITH tmp as (
    SELECT DECODE(to_char(MOD(LEVEL,2)),1,'包裹','文件') TYPE,
           LPAD(CHR(96+LEVEL),3,CHR(96+LEVEL)) goods_code
      FROM dual CONNECT BY level < 10 )
    SELECT TYPE, wm_concat(goods_code)
      from tmp
     GROUP BY TYPE
    ;
    9i的话,写函数或者过程吧
      

  2.   

    select cargo_type, count(goods_code),wm_concat(goods_code)
     from ehu_goods group by cargo_type;
    这样不对吗?