两个表
表一字段:产品编号,费用类别标志,费用数量
表二字段:费用类别标志,费用类别中文名
表二中是所有费用类别,类别数有限,现在想查询出这样的结果:
产品编号,费用类别1的数量,费用类别2的数量.......
怎么写SQL啊,在线等

解决方案 »

  1.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',['+费用类别中文名+']=sum(case 费用类别标志 when '+rtrim(费用类别标志)+' then 费用数量 end)' from 表二 order by 费用类别标志
    set @sql='select 产品编号'+@sql+' from 表一 group by 产品编号'
    exec(@sql)
      

  2.   

    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+',sum(case when 费用类别标志='+cast(a.费用类别标志 as varchar)+' then 费用数量 else 0 end) as ['+b.费用类别中文名+']'
    from 表一 a,表二 b
    where a.费用类别标志=b.费用类别标志
    group by a.费用类别标志,b.费用类别中文名exec('select 产品编号'+@sql+' from 表一 group by 产品编号')