将查询结果写入新表

时间:2015-10-13 09:01:10

标签: sql-server tsql

如何将此问题中显示的SQL Server查询结果Transform a table from rows to columns写入新表?

我尝试了以下操作,但它无效:

SELECT * INTO [dbo.table] FROM query;

2 个答案:

答案 0 :(得分:1)

多部分名称 schema_name.table_name

SELECT * 
INTO [dbo].[new_table_name] 
FROM query;

对于您的情况,您需要使用:

SET @query = N'SELECT Name, ' + @cols + ' 
            INTO [dbo].[new_table_name]
            from 
            (
                select Name, Product,
                [rn] = ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Product)
                from #mytable
            ) x
            pivot 
            (
                max(Product)
                for rn in (' + @cols_piv + ')
            ) p ';

EXEC [dbo].[sp_executesql] @query;

SELECT *
FROM [dbo].[new_table_name];

请注意,如果表存在,您首先需要DROP它:

DROP TABLE [dbo].[new_table_name];

您的方法存在的问题是动态PIVOT 可以返回可变长度列。因此,下一个调用将是不同的,您需要每次都重新创建表。

答案 1 :(得分:0)

如果要将数据添加到现有表格,则需要使用...

Insert Into dbo.Table (column1, column2) 
SELECT Column1, Column2 FROM query

但是,如果您想使用临时表,则需要......

SELECT * INTO #table FROM query;

使用临时表等<{3}}