读书人

列数的变故

发布时间: 2013-01-01 14:04:20 作者: rapoo

列数的变动


--整理
select a.CompanyID,a.SegtID,a.SegtName,a.AcctNoBE,a.AcctName,a.AcctID,
b.ClosingAmtBase,c.fromdateString into #TT
from dbo.D_AcctSegtType a inner join dbo.F_AccountEntry b
on a.AcctID=b.AcctID and a.CompanyID =b.companyid
inner join dbo.D_FiscalDate c on b.FiscalDateID=c.FiscalDateID and b.CompanyID=c.CompanyID
where a.AcctGroup='Balance Sheet' and fromdateString between '20110401' and '20121201'


--列转行
declare @datename varchar(300)
select @datename=ISNULL (@datename+',','')+quotename ([fromdatestring])from #TT group by [fromdatestring]
order by [fromdatestring]
insert into [dbo].[RPT_resultA3_restart](
[CompanyID] ,
[SegtID] ,
[Segtname] ,
[acctnobe] ,
[acctname] ,
[acctid] ,
[Mtd201104] ,
[Mtd201105] ,
[Mtd201106] ,
[Mtd201107] ,
[Mtd201108] ,
[Mtd201109] ,
[Mtd201110] ,
[Mtd201111] ,
[Mtd201112] ,
[Mtd201201] ,
[Mtd201202] ,
[Mtd201203] ,
[Mtd201204] ,
[Mtd201205] ,
[Mtd201206] ,
[Mtd201207] ,
[Mtd201208] ,
[Mtd201209] ,
[Mtd201210]


)

exec('select *from #TT pivot (max([closingamtbase])for [fromdatestring] in ('+@datename+'))b')

问题是这样的,大家都看到我在整理那里设了between '20110401' and '20121201'
的条件,但数据库里面只在到20121001的数,那么转出来就没有了20121101和20121201的列了
这样我插到RPT_resultA3_restart表的时候的列数就不一样了,只有每个月在insert 那里加了
,我不想这样,有什么办法可以在转列随意加几列,或insert 那里的列跟着转出来的列数变!谢谢!

[解决办法]
--drop table [dbo].[RPT_resultA3_restart]
exec('select * into [dbo].[RPT_resultA3_restart] from #TT pivot (max([closingamtbase])for [fromdatestring] in ('+@datename+'))b')

[解决办法]
引用:
引用:
我承认跟不上你的逻辑
不要这样说嘛!是我表达不清啦!问题解决了,分给你了!
解决了,结贴吧,蹭点分

读书人网 >SQL Server

热点推荐