【发布时间】:2016-03-23 09:50:04
【问题描述】:
我正在尝试在 tsql 中动态创建一个临时表。我有一个查询,它在一列中为我提供了一些数据(作为另一个动态查询的结果)。例如说像 2011/2012 这样的年份。这将在一个列中。我想要的是选择每一行的值并将其命名为 int 类型的列名。 稍后,我可以使用该临时表将数据转储到其中。
有什么建议吗?
【问题讨论】:
标签: sql-server-2008 tsql dynamic-sql temp-tables
我正在尝试在 tsql 中动态创建一个临时表。我有一个查询,它在一列中为我提供了一些数据(作为另一个动态查询的结果)。例如说像 2011/2012 这样的年份。这将在一个列中。我想要的是选择每一行的值并将其命名为 int 类型的列名。 稍后,我可以使用该临时表将数据转储到其中。
有什么建议吗?
【问题讨论】:
标签: sql-server-2008 tsql dynamic-sql temp-tables
你能用这样的东西吗?
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 语句以更改表;这是为了使表存在于当前上下文中 - 如果创建语句是动态的,您可能会收到错误。
我不喜欢像这样使用动态 sql - 如果您以后可以使用数据透视来返回列,那可能是一个更好的选择(我不确定在这种情况下是否可行)。
【讨论】: