动态列 pivot 到表变量

本文提供了一个使用 SQL 的 Pivot 函数来转换数据集的例子。通过声明变量并构造动态 SQL 语句,实现了将特定列的值旋转为新列的过程。具体操作包括设置参数、构造用于旋转的数据集、生成和执行动态 SQL 语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

declare
@set  nvarchar(max),
@sql  nvarchar(max)
declare
@tablenew table(a float,b float,c float,d float,e float,f float,g float,h float,k float,i float)
set @set=''
select @set=@set+'['+calendar.LedgerPeriod+'],' from
parameter  cross join calendar
 where
 (parameter.year*100+parameter.month)<=calendar.ledgerPeriod
 and
 (
  ((parameter.year+1)*100+(parameter.month+9-12)>= calendar.ledgerPeriod)
 )
if(len(@set)>1)
 set @set=left(@set,len(@set)-1)

set @sql=
'
select * from
   (
 select
 calendar.LedgerPeriod,
 calendar.WeekNums from
 parameter  cross join calendar
 where
 (parameter.year*100+parameter.month)<=calendar.ledgerPeriod
 and
 (
  ((parameter.year+1)*100+(parameter.month+9-12)>= calendar.ledgerPeriod)
 )
)as  kkkkkk
pivot(sum(WeekNums) for LedgerPeriod
in('+@set+')) as mmm '

--exec(@sql)

insert into @tablenew exec(@sql)
select * from @tablenew

转载于:https://www.cnblogs.com/honkcal/archive/2012/05/18/2507317.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值