我这里有这样的一个库存
物品名称    地区    数量
aaa         地区1编码    1
aaa         地区2编码    2
aaa         地区3编码    4
aaa         地区4编码    6
bbb         地区2编码    3
bbb         地区3编码    8
这个地区字段里的地区编码是从另外的一个地区表里取过来的,不确定如何形成如下表格?物品名称    地区1  地区2 地区3 地区4 ...  数量合计
aaa         ...
bbb
ccc
...

解决方案 »

  1.   


    with t as(
         select 'aaa'gname,'地区1编码' loc,1 amount from dual union all
         select 'aaa','地区2编码',2 from dual union all
         select 'aaa','地区3编码',4 from dual union all
         select 'aaa','地区4编码',6 from dual union all
         select 'bbb','地区2编码',3 from dual union all
         select 'ccc','地区3编码',8 from dual)
    select gname,wm_concat(loc) loc,sum(amount) sm
    from t
    group by gname;
    GNAME WM_CONCAT(LOC)                                           SM
    ----- ------------------------------------------------ ----------
    aaa   地区1编码,地区2编码,地区3编码,地区4编码                  13
    bbb   地区2编码                                                 3
    ccc   地区3编码                                                 8
      

  2.   


    --wm_concat()字符串连接函数应用于:10g,11g
    SQL> with t as(
      2       select 'aaa'gname,'地区1编码' loc,1 amount from dual union all
      3       select 'aaa','地区2编码',2 from dual union all
      4       select 'aaa','地区3编码',4 from dual union all
      5       select 'aaa','地区4编码',6 from dual union all
      6       select 'bbb','地区2编码',3 from dual union all
      7       select 'ccc','地区3编码',8 from dual)
      8  select gname,wm_concat(loc) loc,sum(amount) sm
      9  from t
     10  group by gname;GNAME LOC                                                                                      SM
    ----- -------------------------------------------------------------------------------- ----------
    aaa   地区1编码,地区2编码,地区3编码,地区4编码                                                  13
    bbb   地区2编码                                                                                 3
    ccc   地区3编码                                                                                 8