如何将此问题中显示的SQL Server查询结果Transform a table from rows to columns写入新表?
我尝试了以下操作,但它无效:
SELECT * INTO [dbo.table] FROM query;
答案 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}}