Select 类型名称,Sum(电子) As 电子,Sum(电脑) As 电脑,Sum(合计) As 合计
From (
      Select 
            '基本' As 类型名称,
            Case 类型名称 When '电子' Then 基本 Else 0 End As 电子,
            Case 类型名称 When '电脑' Then 基本 Else 0 End As 电脑,
            Case 类型名称 When '合计' Then 基本 Else 0 End As 合计
      From 
            TableA
      Union All
      Select 
            '业绩' As 类型名称,
            Case 类型名称 When '电子' Then 业绩 Else 0 End As 电子,
            Case 类型名称 When '电脑' Then 业绩 Else 0 End As 电脑,
            Case 类型名称 When '合计' Then 业绩 Else 0 End As 合计
      From 
            TableA 
      Union All
      Select 
            '提成' As 类型名称,
            Case 类型名称 When '电子' Then 提成 Else 0 End As 电子,
            Case 类型名称 When '电脑' Then 提成 Else 0 End As 电脑,
            Case 类型名称 When '合计' Then 提成 Else 0 End As 合计
      From 
            TableA
      ) T Group By 类型名称 Order By 类型名称 Desc

解决方案 »

  1.   

    ---创建测试数据
    If Object_id('TableA') Is Not Null
       Drop Table TableA
    Go
    Create Table TableA(类型名称 Varchar(10),基本 Int,业绩 Int,提成 Int)
      Insert TableA Select '电子',500,1000,100
          Union All Select '电脑',400,1200,240
          Union All Select '合计',900,2200,340---查询测试数据
    Select * From TableA---查询结果
    Select 类型名称,Sum(电子) As 电子,Sum(电脑) As 电脑,Sum(合计) As 合计
    From (
          Select 
                '基本' As 类型名称,
                Case 类型名称 When '电子' Then 基本 Else 0 End As 电子,
                Case 类型名称 When '电脑' Then 基本 Else 0 End As 电脑,
                Case 类型名称 When '合计' Then 基本 Else 0 End As 合计
          From 
                TableA
          Union All
          Select 
                '业绩' As 类型名称,
                Case 类型名称 When '电子' Then 业绩 Else 0 End As 电子,
                Case 类型名称 When '电脑' Then 业绩 Else 0 End As 电脑,
                Case 类型名称 When '合计' Then 业绩 Else 0 End As 合计
          From 
                TableA 
          Union All
          Select 
                '提成' As 类型名称,
                Case 类型名称 When '电子' Then 提成 Else 0 End As 电子,
                Case 类型名称 When '电脑' Then 提成 Else 0 End As 电脑,
                Case 类型名称 When '合计' Then 提成 Else 0 End As 合计
          From 
                TableA
          ) T Group By 类型名称 Order By 类型名称 Desc
    --结果
    /*
    类型名称 电子          电脑          合计          
    ---- ----------- ----------- ----------- 
    业绩   1000        1200        2200
    提成   100         240         340
    基本   500         400         900(所影响的行数为 3 行)
    */
      

  2.   

    行列互换问题,给一个例子作为参考:
    ------------------------------------------------------------------------------------
    --生成测试数据
    create table test1(A varchar(20),b int,c int,d int,e int)
    insert into test1 select 'x',1,2 ,3 ,4
    insert into test1 select 'y',5,6 ,7 ,8
    insert into test1 select 'z',9,10,11,12
    --生成中间数据表
    declare @s varchar(8000)
    set @s='create table test2(a varchar(20)'
    select @s=@s+','+A+' varchar(10)' from test1
    set @s=@s+')'
    exec(@s)--借助中间表实现行列转换
    declare @name varchar(20)declare t_cursor cursor for 
    select name from syscolumns 
    where id=object_id('test1') and colid>1 order by colidopen t_cursorfetch next from t_cursor into @namewhile @@fetch_status=0
    begin
        exec('select '+@name+' as t into test3 from test1')
        set @s='insert into test2 select '''+@name+''''
        select @s=@s+','''+rtrim(t)+'''' from test3
        exec(@s)
        exec('drop table test3')
        fetch next from t_cursor into @name
    end
    close t_cursor
    deallocate t_cursor
    --查看行列互换处理结果
    select * from test2/*
    a    x    y    z
    ---- ---- ---- ---- 
    b    1    5    9
    c    2    6    10
    d    3    7    11
    e    4    8    12
    */
    --删除测试数据
    drop table test1,test2
      

  3.   

    你是2000 还是2005???
    2005 用 povit..