序号   产品名称   代码  总   计  xx公司    xx公司    xxxx公司             
             产  销    产  销     产  销     产  销                  
一   xxx产品合计   5100  0    0 0   0    0    0      0  0
1   二级分类A   5110  0    0 0   0    0    0      0  0  
1-1   三级分类   5111  0    0 0   0    0    0      0  0 
1-2   三级分类   5112  0    0 0   0    0    0      0  0 
1-3   三级分类   5113  0    0 0   0    0    0      0  0 
1-4   三级分类   5114  0    0 0   0    0    0      0  0 
2   二级分类B   5120  0    0 0   0    0    0      0  0 
2-1   三级分类1   5121  0    0 0   0    0    0      0  0    
2-1-1   三级分类2   5191  0    0 0   0    0    0      0  0     
2-1-2   三级分类3   5192  0    0 0   0    0    0      0  0     
2-1-3   三级分类4   5193  0    0 0   0    0    0      0  0     
2-1-4   三级分类5   5194  0    0 0   0    0    0      0  0     
二   xxx合计   5200  0    0 0   0    0    0      0  0    
1   二级分类2A   5210  0    0 0   0    0    0      0  0    
2   二级分类2B   5220  0    0 0   0    0    0      0  0    
2-1   三级分类21   5221  0    0 0   0    0    0      0  0    
2-2   三级分类22   5222  0    0 0   0    0    0      0  0     (行列都是可变的)行的产品名称是级联的,分类子分类的关系,最多有四级

解决方案 »

  1.   

    公司ID 公司名称 父公司ID  产品名称 代码  产 销 
      

  2.   

    问题补充-----------------------------
    序号 
    产 品 名 称 
    计算单位   
    代码   
    产量本季 
    产量本季累计止 
    销量本季 
    销量本季累计止
    销量其中:出口量本季
    销量其中:出口量本季累计止 
    备注问题补充---------------------------------------------
    生成这样的报表
    序号 产品名称 代码 总 计 xx公司 xx公司 xxxx公司   
      产 销 产 销 产 销 产 销   
    一 xxx产品合计 5100 0 0 0 0 0 0 0 0
    1 二级分类A 5110 0 0 0 0 0 0 0 0   
    1-1 三级分类 5111 0 0 0 0 0 0 0 0  
    1-2 三级分类 5112 0 0 0 0 0 0 0 0  
    1-3 三级分类 5113 0 0 0 0 0 0 0 0  
    1-4 三级分类 5114 0 0 0 0 0 0 0 0  
    2 二级分类B 5120 0 0 0 0 0 0 0 0  
    2-1 三级分类1 5121 0 0 0 0 0 0 0 0   
    2-1-1 三级分类2 5191 0 0 0 0 0 0 0 0   
    2-1-2 三级分类3 5192 0 0 0 0 0 0 0 0   
    2-1-3 三级分类4 5193 0 0 0 0 0 0 0 0   
    2-1-4 三级分类5 5194 0 0 0 0 0 0 0 0   
    二 xxx合计 5200 0 0 0 0 0 0 0 0   
    1 二级分类2A 5210 0 0 0 0 0 0 0 0   
    2 二级分类2B 5220 0 0 0 0 0 0 0 0   
    2-1 三级分类21 5221 0 0 0 0 0 0 0 0   
    2-2 三级分类22 5222 0 0 0 0 0 0 0 0  
      

  3.   

    行别说有4级,一万级都没问题,但是你的公司数量不固定就相当于列不固定,必须用PL-SQL生成动态的语句,可以用存储过程返回游标,返回SQL字符串再查询也行具体的SQL大概是这样select 
           sum(产量*decode(公司字段,公司1的值,1,0))  公司1产,
           sum(销量*decode(公司字段,公司1的值,1,0))  公司1销,
           sum(产量*decode(公司字段,公司2的值,1,0))  公司2产,
           sum(销量*decode(公司字段,公司2的值,1,0))  公司2销,
           ......  /*这里游标迭代一下字符串*/
           from 产品销量表
    group by grouping sets( (一类代码字段,二类代码字段,三类代码字段,四类代码字段),(一类代码字段,二类代码字段,三类代码字段),(一类代码字段,二类代码字段),(一类代码字段),())