TSQL select into Temp table from dynamic sql

前端 未结 5 1117
星月不相逢
星月不相逢 2020-12-03 13:35

This seems relatively simple, but apparently it\'s not.

I need to create a temp table based on an existing table via the select into syntax:

SELECT *         


        
相关标签:
5条回答
  • 2020-12-03 14:12

    A working example.

    DECLARE @TableName AS VARCHAR(100)
    SELECT @TableName = 'YourTableName'
    
    EXECUTE ('SELECT * INTO #TEMP  FROM ' + @TableName +'; SELECT * FROM #TEMP;')
    

    Second solution with accessible temp table

    DECLARE @TableName AS VARCHAR(100)
    SELECT @TableName = 'YOUR_TABLE_NAME'
    
    EXECUTE ('CREATE VIEW vTemp AS
            SELECT *
            FROM ' + @TableName)
    SELECT * INTO #TEMP  FROM vTemp 
    
    --DROP THE VIEW HERE      
    DROP VIEW vTemp
    
    /*START USING TEMP TABLE
    ************************/
    --EX:
    SELECT * FROM #TEMP
    
    
    --DROP YOUR TEMP TABLE HERE
    DROP TABLE #TEMP
    
    0 讨论(0)
  • 2020-12-03 14:12

    Take a look at OPENROWSET, and do something like:

    SELECT * INTO #TEMPTABLE FROM OPENROWSET('SQLNCLI'
         , 'Server=(local)\SQL2008;Trusted_Connection=yes;',
         'SELECT * FROM ' + @tableName)
    
    0 讨论(0)
  • 2020-12-03 14:13
    DECLARE @count_ser_temp int;
    DECLARE @TableName AS VARCHAR(100)
    SELECT @TableName = 'TableTemporal'
    
    EXECUTE ('CREATE VIEW vTemp AS
        SELECT *
        FROM ' + @TableTemporal)
    SELECT TOP 1 * INTO #servicios_temp  FROM vTemp
    
    DROP VIEW vTemp
    
    -- Contar la cantidad de registros de la tabla temporal
    SELECT @count_ser_temp = COUNT(*) FROM #servicios_temp;
    
    -- Recorro los registros de la tabla temporal 
    WHILE @count_ser_temp > 0
     BEGIN
     END
    END
    
    0 讨论(0)
  • 2020-12-03 14:22
    declare @sql varchar(100);
    
    declare @tablename as varchar(100);
    
    select @tablename = 'your_table_name';
    
    create table #tmp 
        (col1 int, col2 int, col3 int);
    
    set @sql = 'select aa, bb, cc from ' + @tablename;
    
    insert into #tmp(col1, col2, col3) exec( @sql );
    
    select * from #tmp;
    
    0 讨论(0)
  • 2020-12-03 14:29

    How I did it with a pivot in dynamic sql (#AccPurch was created prior to this)

    DECLARE @sql AS nvarchar(MAX)
    declare @Month Nvarchar(1000)
    
    --DROP TABLE #temp
    select distinct YYYYMM into #temp from #AccPurch AS ap
    SELECT  @Month = COALESCE(@Month, '') + '[' + CAST(YYYYMM AS VarChar(8)) + '],' FROM    #temp
    
    SELECT   @Month= LEFT(@Month,len(@Month)-1)
    
    
    SET @sql = N'SELECT UserID, '+ @Month + N' into ##final_Donovan_12345 FROM (
    Select ap.AccPurch ,
           ap.YYYYMM ,
           ap.UserID ,
           ap.AccountNumber
    FROM #AccPurch AS ap 
    ) p
    Pivot (SUM(AccPurch) FOR YYYYMM IN ('+@Month+ N')) as pvt'
    
    
    EXEC sp_executesql @sql
    
    Select * INTO #final From ##final_Donovan_12345
    
    DROP TABLE  ##final_Donovan_12345
    
    Select * From #final AS f
    
    0 讨论(0)
提交回复
热议问题