SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
ALTER procedure CrossTable
@strTableName as varchar()= 查询表
@strCol as varchar()=
@strGroup as varchar()=分组字段
@strNumber as varchar()=被统计的字段
@strCompute as varchar()=Sum运算方式
as
declare @strSql as varchar()@strTempCol as varchar()
execute (DECLARE corss_cursor CURSOR FOR SELECT DISTINCT +@strCol+ from +@strTableName+ for read only) 生成游标
begin
set nocount on
set @strSql=select +@strGroup++@strCompute+(+@strNumber+) as [+@strNumber+]
open corss_cursor
while(=)
begin
fetch next from corss_cursor
into @strTempCol
if(@@fetch_status <>) break
set @strSql=@strSql++@strCompute+( case +@strCol+ when +@strTempCol+ then +@strNumber + else end ) as [+@strTempCol+]
end
set @strsql=@strSql+ from +@strTableName+ group by +@strGroup
print @strSql
execute(@strSql)
if @@error <> return @@error
print @@error
close corss_cursor
deallocate corss_cursor return
end
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO