欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【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
以上所分享的是关于SQL实现动态交叉表,下面是编辑为你推荐的有价值的用户互动:
相关问题:sql 动态交叉表如题 谢谢了
答:http://blog.csdn.net/lee576/archive/2006/12/04/1429928.aspx 用实例来说明什么是动态交叉表。 >>详细
相关问题:SQLSERVER 两表生成动态交叉表?
答:--静态SQL select [商品款号],[品名],[采购价],[零售单价],[颜色],[码系], case [序号] when 0 then [数量] else null end "0", case [序号] when 1 then [数量] else null end "1", case [序号] when 2 then [数量] else null end "2", case [... >>详细
相关问题:oracle交叉表,动态SQL
答:代码没有问题,只是你不会用工具 把下面内容存于C:\T.SQL,再在sql plus 命令行输入:@C:\T 即得到结果! CREATE OR REPLACE PACKAGE TEST2 as TYPE t_cursor IS REF CURSOR; --定义游标变量用于返回记录集 procedure sp_test(p_cursor out t_cursor... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
