当前位置:首页 > 网络编程 > 数据库 > Mysql > SQL实现动态交叉表

SQL实现动态交叉表

点击次数:36 次 发布日期:2008-11-22 09:01:32 作者:源代码网
源代码网推荐
以下为引用的内容:
SET QUOTED_IDENTIFIER ON
  GO
  SET ANSI_NULLS ON
  GO
  ALTER procedure CrossTable
  @strTableName as varchar(50)="", --查询表
  @strCol as varchar(50)="",
  @strGroup as varchar(50)="",--分组字段
  @strNumber as varchar(50)="",--被统计的字段
  @strCompute as varchar(50)="Sum"--运算方式
  as
  declare @strSql as varchar(1000),@strTempCol as varchar(100)
  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(0=0)
  begin
  fetch next from corss_cursor
  into @strTempCol
  if(@@fetch_status <>0) break
  set @strSql=@strSql+","+@strCompute+"( case "+@strCol+" when """+@strTempCol+""" then "+@strNumber +" else 0 end ) as        ["+@strTempCol+"]"
  end
  set @strsql=@strSql+" from "+@strTableName+" group by "+@strGroup
  print @strSql
  execute(@strSql)
  if @@error <>0 return @@error
  print @@error
  close corss_cursor
  deallocate corss_cursor return 0
  end
  GO
  SET QUOTED_IDENTIFIER OFF
  GO
  SET ANSI_NULLS ON
  GO
源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华