-- try like this.declare @strSQL varchar(4000)
set @strSQL=''
select @strSQL=@strSQL+',sum(case 部门 when '''+a.部门+''' then 总金额 else 0 end) as 部门'+a.部门+'产品总金额'
from (select distinct 部门 from 出库量表) aexec('select b.类别名称 as 财务要的分类 '+@strSQL+'
from 出库量表 a join 类型表 b
on a.产品分类=b.类别ID
group by b.类别名称')
Go
set @strSQL=''
select @strSQL=@strSQL+',sum(case 部门 when '''+a.部门+''' then 总金额 else 0 end) as 部门'+a.部门+'产品总金额'
from (select distinct 部门 from 出库量表) aexec('select b.类别名称 as 财务要的分类 '+@strSQL+'
from 出库量表 a join 类型表 b
on a.产品分类=b.类别ID
group by b.类别名称')
Go
财务要的分类=类别名称,
部门A产品总金额=isnull(出库量表.部门A产品总金额, 0),
部门B产品总金额=isnull(出库量表.部门B产品总金额, 0)
from 类别表
left join
(
select 产品分类,
部门A产品总金额=sum(case when 部门='A' then 总金额 else 0 end),
部门B产品总金额=sum(case when 部门='B' then 总金额 else 0 end)
from 出库量表
group by 产品分类
)出库量表 on 出库量表.产品分类=类别表.类别ID
where 类别表.财务要的类=1