插入列数不同的位置

时间:2013-10-15 05:25:25

标签: sql sql-server-2005

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

我试过了:

Select * into #Table2 from #Table1 

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

或者,如果我在二月份运行枢轴,有没有办法将第29,30和31列添加到#Table 1 如果我在六月/九月运行它,还是31?

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

2 个答案:

答案 0 :(得分: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 

希望这有帮助!!!

答案 1 :(得分:0)

您好在创建临时表#table1和#table2之前尝试此代码您应该检查表是否存在然后尝试删除它并在最终执行后按照您的逻辑创建,您应该再次从临时数据库中删除这两个表。希望这段代码会有所帮助。 enter image description here