create table 项目类别表(编号 varchar(50),名称 varchar(50))
insert 项目类别表 values('001','农产品')
insert 项目类别表 values('001001','农产品A类')
insert 项目类别表 values('001002','农产品B类')
insert 项目类别表 values('001001001','农产品A类i小类')
insert 项目类别表 values('001001002','农产品A类j小类')create table 你的表(地区 varchar(100),项目类编号 varchar(50),数量 int)
insert 你的表 values('地区1','001001001',50)
insert 你的表 values('地区1','001001002',100)
insert 你的表 values('地区1','001002',50)
go--使用:
declare @sql varchar(8000)
set @sql = 'select 地区'
select @sql = @sql + ',sum(case 项目类编号 when '''+编号+''' then 数量 else 0 end) ['+名称+']'
  from (select * from 项目类别表 where 编号 in (select 项目类编号 from 你的表)) as a
select @sql = @sql+' from 你的表 group by 地区'exec(@sql)
go

解决方案 »

  1.   

    create table 项目类别表(编号 varchar(50),名称 varchar(50))
    insert 项目类别表 values('001','农产品')
    insert 项目类别表 values('001001','农产品A类')
    insert 项目类别表 values('001002','农产品B类')
    insert 项目类别表 values('001001001','农产品A类i小类')
    insert 项目类别表 values('001001002','农产品A类j小类')create table 你的表(地区 varchar(100),项目类编号 varchar(50),数量 int)
    insert 你的表 values('地区1','001001001',50)
    insert 你的表 values('地区1','001001002',100)
    insert 你的表 values('地区1','001002',50)
    go--使用:
    declare @sql varchar(8000)
    set @sql = 'select 地区'
    select @sql = @sql + ',sum(case 项目类编号 when '''+编号+''' then 数量 else 0 end) ['+名称+']'
      from (select * from 项目类别表 where 编号 in (select 项目类编号 from 你的表)) as a
    select @sql = @sql+' from 你的表 group by 地区'exec(@sql)
    go
      

  2.   

    SQL只是数据库,不可能象前台工具一样可以随心所欲地打印报表。