行的内容变换到列显示,并且添加行求和,列求和

StoreCode         GoodsCode           Size                 Color           Num  
      s1                     g1                         165                     01               2  
      s1                     g2                         170                     01               1  
      s1                     g1                         170                     02               3  
      s2                     g1                         165                     01               4  
      s2                     g2                         170                     01               5  
  ......  
   
  显示结果如下:  
  GoodsCode             Size             Color             s1             s2             ColSum  
        g1                       165               01                 2               4                 6  
        g1                       170               02                 3               0                 3  
        g2                       170               01                 1               5                 6  
                                                                          6               9                 15  
   
  也有可能这样显示  
  GoodsCode                 s1             s2             ColSum  
        g1                         5               4                 9  
        g2                         1               5                 6   
       null                        6               9                 15  

解答

  -- 插入数据   
   Insert    TEST   
  
Select     ' s1 ' , ' g1 ' , ' 165 ' , ' 01 ' , ' 2 '    
  
Union     All    
  
Select     ' s1 ' , ' g2 ' , ' 170 ' , ' 01 ' , ' 1 '    
  
Union     All    
  
Select     ' s1 ' , ' g1 ' , ' 170 ' , ' 02 ' , ' 3 '    
  
Union     All    
  
Select     ' s2 ' , ' g1 ' , ' 165 ' , ' 01 ' , ' 4 '    
  
Union     All    
  
Select     ' s2 ' , ' g2 ' , ' 170 ' , ' 01 ' , ' 5 '    
  
Union     All    
  
Select     ' s3 ' , ' g2 ' , ' 170 ' , ' 01 ' , ' 5 '  
  
Union     All    
  
Select     ' s4 ' , ' g3 ' , ' 170 ' , ' 01 ' , ' 5 '  
  
-- 测试   
   Declare     @S   Varchar ( 1000 )   
  
Set     @S = ' Select   GoodsCode '    
  
Select     @S = @S + ' , ' + ' SUM(Case   StoreCode   When    ''' + StoreCode + '''    Then   Num   Else   0   End)   As    ' + StoreCode   
  
from    ( Select     Distinct    StoreCode    from    TEST   )   A    Order     by    StoreCode   
  
Set     @S = @S + '    ,SUM(Num)   As   ColSum   from   TEST   Group   By   GoodsCode   With   Rollup    '    
print   @s
  
EXEC ( @S )   
  
-- 删除测试环境   
   Drop     Table    TEST   
  
-- 结果   
   /*   
  GoodsCode s1 s2 ColSum   
  g1 5 4 9   
  g2 1 5 6   
  NULL 6 9 15   
  
*/
   
详见 http://topic.csdn.net/t/20050619/21/4092792.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值