34,838
社区成员




CREATE PROCEDURE 通用组合统计报表
@主表 varchar(100),
@行表 varchar(100),
@列表 varchar(100),
@列名 varchar(50),
@行表字段 varchar(50),
@列表字段 varchar(50),
@主行字段 varchar(50),
@主列字段 varchar(50)
AS
BEGIN
SET NOCOUNT ON;
declare @sql varchar(8000)
declare @sql2 varchar(1000)
set @sql = 'select t1.'+@列表字段+' as '+@列名+' , count(*) 合计 '
select @sql = @sql + ' , sum(case t2.'+@主行字段+' when ''' + @行表字段 + ''' then 1 else 0 end) [' + @行表字段 + ']'
--下面这句有问题,你要给@行表字段个别名***************************************************
set @sql =@sql + 'from (select distinct '+@行表字段+'as '+@行表字段+' from '+@行表+') as a'
set @sql = @sql + ' from '+@列表+' t1 left join '+@主表+' t2 on t1.'+@列表字段+' = t2.'+@主列字段+' group by t1.'+@主列字段
--将@sql打印出来看看****************************************************
print @sql
exec(@sql)
CREATE PROCEDURE 通用组合统计报表
@主表 varchar(100),
@行表 varchar(100),
@列表 varchar(100),
@列名 varchar(50),
@行表字段 varchar(50),
@列表字段 varchar(50),
@主行字段 varchar(50),
@主列字段 varchar(50)
AS
BEGIN
SET NOCOUNT ON;
declare @sql varchar(8000)
declare @sql2 varchar(1000)
set @sql = 'select t1.'+@列表字段+' as '+@列名+' , count(*) 合计 '
select @sql = @sql + ' , sum(case t2.'+@主行字段+' when ''' + @行表字段 + ''' then 1 else 0 end) [' + @行表字段 + ']'
set @sql =@sql + 'from (select distinct '+@行表字段+' from '+@行表+') as a'
set @sql = @sql + ' from '+@列表+' t1 left join '+@主表+' t2 on t1.'+@列表字段+' = t2.'+@主列字段+' group by t1.'+@主列字段
--将@sql打印出来看看****************************************************
print @sql
exec(@sql)
语法貌似没有问题...