declare @sql varchar(8000)
set @sql = 'select ProductName'
select @sql = @sql + ',sum(case Producttype when '''+ProductType+''' then SumPrice end) ['+ProductType+']',sum(SumPrice) as SumPrice
 from (select distinct ProductType from 表) as a
select @sql = @sql+' from 表 group by ProductName'
exec(@sql)

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql = 'select ProductName'
    select @sql = @sql + ',sum(case Producttype when '''+ProductType+''' then SumPrice end) ['+ProductType+']' 
      from (select distinct ProductType from 表 order by ProductType) as a
    select @sql = @sql+',sum(SumPrice) as SumPrice from 表 group by ProductName'
    exec(@sql)
      

  2.   

    declare @sql varchar(8000)
    set @sql = 'select ProductName'
    select @sql = @sql + ',sum(case Producttype when '''+ProductType+''' then SumPrice end) ['+ProductType+']' 
      from (select distinct ProductType from 表) as a
    select @sql = @sql+',sum(SumPrice) as SumPrice from 表 group by ProductName'
    exec(@sql)妙
      

  3.   

    如果确定了有几个,也可以这样:
     select productname,
    sum(case producttype when type_a then sumprice else 0 end) [producttype],
    sum(case producttype when type_b then sumprice else 0 end) [producttype],
    sum(sumprice) as sumprice 
    from table group by productname
      

  4.   

    我借花献佛,将"大力"兄提供的有关交叉数据报表的一段代码放在这里,你可以举一反三:create table 你的表(姓名 varchar(100),学历 varchar(100),部门 int)
    insert 你的表 values('n1','aa',11)
    insert 你的表 values('n2','bb',1)
    insert 你的表 values('n3','aa',45)
    insert 你的表 values('n4','cc',81)
    insert 你的表 values('n5','a',11)
    insert 你的表 values('n6','aay',561)
    insert 你的表 values('n7','a',14)declare @sql varchar(8000)
    set @sql = 'select 部门'
    select @sql = @sql + ',sum(case 学历 when '''+学历+''' then 1 else 0 end) ['+学历+'的人数]'
      from (select distinct 学历 from 你的表) aselect @sql =@sql+' from 你的表 group by 部门'exec(@sql)
      

  5.   

    http://www.csdn.net/develop/read_article.asp?id=18622
      

  6.   

    --测试:
    drop table t1
    go
    create table t1(ProductName varchar(10), ProductType varchar(10),SumPrice numeric(10,1))
    insert t1 select 'Product_A','Type_A',      15.0
    union all select 'Product_A','Type_B',      20.0
    union all select 'Product_B','Type_A',      50.0declare @sql varchar(8000)
    set @sql = 'select ProductName'
    select @sql = @sql + ',sum(case Producttype when '''+ProductType+''' then SumPrice  end) ['+ProductType+']'
     from (select distinct ProductType from t1) as a
    select @sql = @sql+',sum(SumPrice) as SumPrice from t1 group by ProductName'
    exec(@sql)