--写成存储过程可以 create proc p_qry as set nocount on declare @s varchar(8000) set @s='' select @s=@s+',['+ckmc+']='''+ckmc+''',数量=sum(case kc.ckbm='''+rtrim(ckbm)+''' then kc.sl else 0 end)' from zd_ck ck where exists( select * from spkc where ckbm=ck.ckbm) exec(' select sp.spbm,fl.flmc,sp.spmc,sp.spgg,sp.spxh ,zsl=sum(kc.sl)'+@s+' from sp_fl fl,sp,spkc kc where fl.flbm=sp.fl and sp.spbm=kc.spbm group by sp.spbm,fl.flmc,sp.spmc,sp.spgg,sp.spxh ')
create proc p_qry
as
set nocount on
declare @s varchar(8000)
set @s=''
select @s=@s+',['+ckmc+']='''+ckmc+''',数量=sum(case kc.ckbm='''+rtrim(ckbm)+''' then kc.sl else 0 end)'
from zd_ck ck
where exists(
select * from spkc where ckbm=ck.ckbm)
exec('
select sp.spbm,fl.flmc,sp.spmc,sp.spgg,sp.spxh
,zsl=sum(kc.sl)'+@s+'
from sp_fl fl,sp,spkc kc
where fl.flbm=sp.fl
and sp.spbm=kc.spbm
group by sp.spbm,fl.flmc,sp.spmc,sp.spgg,sp.spxh
')