浏览 4822 次
锁定老帖子 主题:动态交叉表
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-09-02
if object_id('Col_Row') is not null drop procedure Col_Row go create procedure Col_Row (@table_to_turn varchar(255), --待旋转的表 @key_col varchar(255), --保留的关键字段 @col_know_how varchar(255), --生成列名的字段 @col_to_turn varchar(255), --作为值的字段 @how_to varchar(20)='sum') --生成值的方式 sum min max avg ,etc. /* 过程作用,根据纵向数据生成新横向结构 Created by Rami created date 2008-08-29 */ as declare @exec varchar(8000) create table #tmp (col varchar(255)) set @exec='select distinct '+@col_know_how+ ' from '+@table_to_turn insert into #tmp exec (@exec) set @exec='' select @exec=@exec+@how_to+'(case when ['+@col_know_how+']= '''+col+''' then ['+@col_to_turn +'] else null end ) as ['+col+'],' from #tmp set @exec=left(@exec,len(@exec)-1) set @exec='select ['+@key_col+'],'+@exec+' from ['+@table_to_turn+'] group by ['+@key_col+']' exec(@exec) go --exec Col_Row 'empreceive','EmpCode','RpName','RPQty','sum' 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-09-02
楼上的怎么回事?
重新编辑一下吧,谢谢 |
|
返回顶楼 | |