--创建处理的存储过程
create proc p_qry
@项目名称 varchar(4000) --要查询的项目名称列表
as
declare @s varchar(8000)
select @项目名称=','+@项目名称+','
,@s=''
select @s=@s+',['+项目名称
+'_上年实际]=sum(case 项目名称 when '''+项目名称
+''' then 上年实际 else 0 end),['+项目名称
+'_今年计划]=sum(case 项目名称 when '''+项目名称
+''' then 今年计划 else 0 end),['+项目名称
+'_计划增长]=sum(case 项目名称 when '''+项目名称
+''' then 计划增长 else 0 end),['+项目名称
+'_累计完成]=sum(case 项目名称 when '''+项目名称
+''' then 累计完成 else 0 end),['+项目名称
+'_同比增长]=sum(case 项目名称 when '''+项目名称
+''' then 同比增长 else 0 end)'
from 表
where charindex(','+项目+',',','+@项目名称+',')>0exec('select 地区'+@s+' from 表
where charindex('',''+项目名称+'','','','+@项目名称+','')>0
group by 地区')
go--调用
exec p_qry 'aaaa1,aaaa2'
create proc p_qry
@项目名称 varchar(4000) --要查询的项目名称列表
as
declare @s varchar(8000)
select @项目名称=','+@项目名称+','
,@s=''
select @s=@s+',['+项目名称
+'_上年实际]=sum(case 项目名称 when '''+项目名称
+''' then 上年实际 else 0 end),['+项目名称
+'_今年计划]=sum(case 项目名称 when '''+项目名称
+''' then 今年计划 else 0 end),['+项目名称
+'_计划增长]=sum(case 项目名称 when '''+项目名称
+''' then 计划增长 else 0 end),['+项目名称
+'_累计完成]=sum(case 项目名称 when '''+项目名称
+''' then 累计完成 else 0 end),['+项目名称
+'_同比增长]=sum(case 项目名称 when '''+项目名称
+''' then 同比增长 else 0 end)'
from 表
where charindex(','+项目+',',','+@项目名称+',')>0exec('select 地区'+@s+' from 表
where charindex('',''+项目名称+'','','','+@项目名称+','')>0
group by 地区')
go--调用
exec p_qry 'aaaa1,aaaa2'
沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛上面的顺序排列怎么办啊?想实现如下表格 aaaa1 | aaaa2
地区 上年实际 今年计划 计划增长 累计完成 同比增长 |上年实际.........
沈阳 20 25 60 100 10 23
大连 10 15 50 300 15 20
鞍山 ...................................................
抚顺.....................................................是不是要改这段?????exec('select 地区'+@s+' from 表
where charindex('',''+项目名称+'','','','+@项目名称+','')>0
group by 地区')
go
地区 上年实际 今年计划 计划增长 累计完成 同比增长 |上年实际......... ........
大连 10 15 50 300 15 10 10
沈阳 20 25 60 100 10 20 20
出现了3列aaaa1的项目和3列aaaa2的项目
--创建处理的存储过程
create proc p_qry
@项目名称 varchar(4000) --要查询的项目名称列表
as
declare @s varchar(8000)
select @项目名称=','+@项目名称+','
,@s=''
select @s=@s+',['+项目名称
+'_上年实际]=sum(case 项目名称 when '''+项目名称
+''' then 上年实际 else 0 end),['+项目名称
+'_今年计划]=sum(case 项目名称 when '''+项目名称
+''' then 今年计划 else 0 end),['+项目名称
+'_计划增长]=sum(case 项目名称 when '''+项目名称
+''' then 计划增长 else 0 end),['+项目名称
+'_累计完成]=sum(case 项目名称 when '''+项目名称
+''' then 累计完成 else 0 end),['+项目名称
+'_同比增长]=sum(case 项目名称 when '''+项目名称
+''' then 同比增长 else 0 end)'
from 表
where charindex(','+项目名称+',',','+@项目名称+',')>0
group by 项目名称exec('select 地区'+@s+' from 表
where charindex('',''+项目名称+'','','','+@项目名称+','')>0
group by 地区
order by charindex('',''+地区+'','','',沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛,''
')
go--调用
exec p_qry 'aaaa1,aaaa2'
exec p_qry 'aaaa1,aaaa2'
提示服务器: 消息 170,级别 15,状态 1,行 4
第 4 行: ',沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛,' 附近有语法错误。
create table 表(id int,项目名称 varchar(10),地区 varchar(10),上年实际 int,今年计划 int,计划增长 int,累计完成 int,同比增长 int)
insert 表 select 1,'aaaa1','大连',10,15,50,300,15
union all select 2,'aaaa1','沈阳',20,25,60,100,10
union all select 3,'aaaa1','鞍山',30,20,50,200,17
union all select 4,'aaaa1','抚顺',8 ,18,23,90 ,15
union all select 5,'aaaa2','大连',20,26,50,300,15
union all select 6,'aaaa2','沈阳',23,15,50,300,15
union all select 7,'aaaa2','鞍山',10,15,50,300,15
union all select 8,'aaaa2','抚顺',10,15,50,300,15
go
--创建处理的存储过程
create proc p_qry
@项目名称 varchar(4000) --要查询的项目名称列表
as
declare @s varchar(8000)
select @项目名称=','+@项目名称+','
,@s=''
select @s=@s+',['+项目名称
+'_上年实际]=sum(case 项目名称 when '''+项目名称
+''' then 上年实际 else 0 end),['+项目名称
+'_今年计划]=sum(case 项目名称 when '''+项目名称
+''' then 今年计划 else 0 end),['+项目名称
+'_计划增长]=sum(case 项目名称 when '''+项目名称
+''' then 计划增长 else 0 end),['+项目名称
+'_累计完成]=sum(case 项目名称 when '''+项目名称
+''' then 累计完成 else 0 end),['+项目名称
+'_同比增长]=sum(case 项目名称 when '''+项目名称
+''' then 同比增长 else 0 end)'
from 表
where charindex(','+项目名称+',',','+@项目名称+',')>0
group by 项目名称exec('select 地区'+@s+' from 表
where charindex('',''+项目名称+'','','','+@项目名称+','')>0
group by 地区
order by charindex('',''+地区+'','','',沈阳,大连,鞍山,抚顺,本溪,丹东,锦州,营口,阜新,辽阳,盘锦,铁岭,朝阳,葫芦岛,'')
')
go--调用
exec p_qry 'aaaa1,aaaa2'
godrop proc p_qry
drop table 表/*--测试结果
地区 aaaa1_上年实际 aaaa1_今年计划 aaaa1_计划增长 aaaa1_累计完成 aaaa1_同比增长 aaaa2_上年实际 aaaa2_今年计划 aaaa2_计划增长 aaaa2_累计完成 aaaa2_同比增长
---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- -----------
沈阳 20 25 60 100 10 23 15 50 300 15
大连 10 15 50 300 15 20 26 50 300 15
鞍山 30 20 50 200 17 10 15 50 300 15
抚顺 8 18 23 90 15 10 15 50 300 15(所影响的行数为 4 行)
--*/