php动态交叉表,SQLServer:SQL实现动态交叉表

15ac951840461d33f7f80960c70a01c2.png

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

2829f2ca24f0d0090cbba57f30759f23.png

SQLServer:SQL实现动态交叉表.doc

下载Word文档到电脑,方便收藏和打印[全文共700字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值