在tsql中动态创建表

时间:2016-03-23 09:50:04

标签: sql-server-2008 tsql dynamic-sql temp-tables

我试图在tsql中动态创建一个temptable。我有一个查询,它在列中为我提供了一些数据(作为另一个动态查询的结果)。比如说像 2011/2012 这样的年份。这将在一个专栏中。我想要的是选择每一行的值,并将其命名为int类型的列名称。 稍后,我可以使用该临时表将数据转储到其中。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

你能用这样的东西吗?

DECLARE @Tab VARCHAR(MAX)
SET @Tab = 'CREATE TABLE #Whatever ('

SELECT @Tab = @Tab + QUOTENAME(ColumnName) + ' INT NULL
,'
FROM @This
SELECT @Tab = SUBSTRING(@Tab,1,LEN(@Tab)-1) + ')'
PRINT @Tab
-- EXEC (@Tab)

两点: 您可能会发现需要在不使用动态sql的情况下创建临时表,然后调整select语句来更改表;这是因为表存在于当前上下文中 - 如果create语句在动态中,则可能会出错。

我不喜欢像这样使用动态sql - 如果你以后可以使用一个pivot来返回列,那可能是一个更好的选择(我不确定在这种情况下是否可能)。