SQL实现动态交叉表

数据库
SQL是结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。同时也是数据库脚本文件的扩展名。

SQL实现动态交叉表:

以下为引用的内容:
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

通过上文中的方法就能够轻松的实现动态交叉表,文章主要是以代码的形式展现的,可能是不太容易理解,可只要大家认真学习,相信就没什么能够难到大家,希望大家都能够从中收获。

【编辑推荐】

  1. SQL Server数据库对上亿表的操作
  2. SQL Server 2008内存性能监控
  3. SQL大赛——5X5方格棋盘难题
  4. 怎样在MySQL中获得更好的搜索结果
责任编辑:迎迎 来源: ddvip.com
相关推荐

2009-09-14 19:20:22

LINQ TO SQL

2009-06-19 14:45:28

Hibernate S

2010-11-12 13:27:13

动态sql

2010-09-16 15:56:15

SQL Server表

2021-12-16 22:59:21

SQL报表应用

2010-07-01 14:36:34

SQL Server动

2010-10-21 14:43:46

SQL Server查

2015-08-26 16:38:37

mybatissql

2010-10-22 16:48:49

SQL删除所有表数据

2010-07-01 14:46:10

SQL Server临

2021-04-21 07:17:16

SQLServer数据库SQL

2021-09-10 16:10:21

panda透视表语言

2021-03-02 09:15:24

MyBatisSQL数据库

2021-06-08 09:18:54

SQLPandas数据透视表

2010-11-11 10:53:22

SQL Server遍

2021-11-07 14:36:01

SQLJDBCMyBatis

2010-11-12 13:34:02

动态sql语句

2011-05-24 11:28:20

OTN光交叉

2010-09-15 08:53:50

SQL Server

2010-07-01 14:11:40

SQL Server内
点赞
收藏

51CTO技术栈公众号