【问题标题】:Dynamic creation of table in tsql在sql中动态创建表
【发布时间】:2016-03-23 09:50:04
【问题描述】:

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

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    你能用这样的东西吗?

    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 - 如果您以后可以使用数据透视来返回列,那可能是一个更好的选择(我不确定在这种情况下是否可行)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-14
      • 2022-10-13
      • 2020-06-17
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      相关资源
      最近更新 更多