0

在 SQL Server 2005 中,我有一个临时表 #Table1,它保存来自基于月份日期的动态数据透视表的数据。该表将有 28、29、30 或 31 列,具体取决于月/年。然后,我想创建另一个带有静态 31 列的临时表 #Table2(为报告格式添加一些数据),并将 #Table1 附加到其中,并在额外的列中添加空值。

我试过了:

Select * into #Table2 from #Table1 

但这不起作用,它告诉我#Table2 已经存在于数据库中。我知道它确实,我把它放在那里!!

或者,如果我在 2 月运行数据透视表,是否可以将第 29,30 和 31 列添加到 #Table 1,如果在 6 月/9 月运行数据透视表,是否可以将第 31 列添加到表中?

我希望这能解释我的困境,并且有一个简单的解决方案。这点我不是很聪明!!

4

2 回答 2

1

您可以像数据透视语句中的其他日期一样添加 29,30 和 31 作为列名,例如:

SELECT 1,2,...,28,29,30,31
FROM table
PIVOT(SUM(aggregate column) FOR spreading column IN(1,2,...,28,29,30,31)) AS P;

然后你不应该使用Select * into子句,因为它会创建一个新表。您应该使用以下子句:

 insert into #Table2 
 select * from #Table1 

希望这可以帮助!!!

于 2013-10-15T06:41:10.947 回答
0

嗨,在创建临时表 #table1 和 #table2 之前尝试此代码,您应该检查表是否存在,然后尝试删除它并在最终执行后根据您的逻辑创建,您应该再次从临时数据库中删除这两个表。希望这段代码会有所帮助。 在此处输入图像描述

于 2013-10-15T06:49:23.277 回答