declare @sql varchar(8000)
set @sql='select sum(SaleNum) as 合计,'
select @sql = @sql + 'sum(case Store when '''+Store+'''                          then SaleNum else 0 end) as '''+Store+''','  from (select distinct Store from SaleTab) as a select @sql = left(@sql,len(@sql)-1) + ' from SaleTab group by Commodity'exec(@sql)
交叉查询问题已经解决,不过又遇到新的问题了,就是很多字段所有值都为0,能不能想办法把这一列全是零的字段删掉?还有就是,这个交叉查询能不能然他生成一个新的表,如果可以生成新表的话,那么以上问题就好结决了!
谢谢

解决方案 »

  1.   

    交叉查询问题已经解决,不过又遇到新的问题了,就是很多字段所有值都为0,能不能想办法把这一列全是零的字段删掉?
    ---------------
    declare @sql varchar(8000)
    set @sql='select sum(SaleNum) as 合计,'
    select @sql = @sql + 'sum(case Store when '''+Store+'''                          then SaleNum else 0 end) as '''+Store+''','  from (select distinct Store from SaleTab) as a select @sql = left(@sql,len(@sql)-1) + ' from SaleTab group by Commodity Having sum(SaleNum) != 0' --加上這個exec(@sql)
      

  2.   

    还有就是,这个交叉查询能不能然他生成一个新的表,如果可以生成新表的话,那么以上问题就好结决了!
    --------
    可以declare @sql varchar(8000)
    set @sql='select sum(SaleNum) as 合计,'
    select @sql = @sql + 'sum(case Store when '''+Store+'''                          then SaleNum else 0 end) as '''+Store+''','  from (select distinct Store from SaleTab) as a select @sql = left(@sql,len(@sql)-1) + ' Into #T from SaleTab group by Commodity Having sum(SaleNum) != 0' --加上這個exec(@sql)Select * From #TDrop Table #T