簡體   English   中英

如何使用選擇查詢結果創建新表

[英]How to create a new table with the select query results

我想將獲得的查詢( 下面公開,請參見:code )轉換為新表,以便我可以更輕松地計算和處理數據。

我知道這個問題聽起來很愚蠢,但是當我使用時:

  SELECT X.*

  INTO NewTable

 FROM

 (

         SELECT .... complex query ....

         FROM ...

          ...

  ) AS X

它向我發送一條錯誤消息,我該如何將我的查詢輸入上述代碼中。

錯誤:

消息156,第15層,狀態1,第10行

關鍵字“ select”附近的語法不正確。

消息156,第15層,州1,第54行

關鍵字“ from”附近的語法不正確。

碼:

  SELECT *

  INTO Price_to_book_valid

  FROM

  (

    select *

    from pricetobook

    declare @sql nvarchar(max);
    declare @fields nvarchar(max);

    set @fields=stuff((select ',['+column0+']'
           from dll_ptbv
           where column0 not in ('Code','Mnemonic')
           group by column0
           order by case when column0='Name' then 0 else 3 end
           ,column0
           for xml path('')
          ,type
           ).value('.','nvarchar(max)')
           ,1 ,1 ,'');
  set@sql='select'+@fields 
     + 'from (select column0
                    ,column1
                    ,sum(rn1*rn2) over(order by rn2) as rn
             from (select column0
                         ,column1
                         ,case when column0=''Name'' then 1 else 0 end as rn1
                         ,row_number() over(order by (select null)) as rn2
                 from dll_ptbv
                 ) as a
            ) as a
 pivot (max(column1) for column0 in ('+@fields+')) as p
 order by [Name]';
  execute sp_executesql @sql;

您可以在“名稱”列之前使用select INTO

SELECT * INTO NewTable 
FROM
(
     SELECT .... complex query .... 
     FROM ...
      ...
) p   <<<<<<<< remove as

(您應該刪除a)首先,您應該分配一個表名,最終可以使用alais

-14.從動態存儲過程執行中選擇新表。


-動態存儲過程到臨時表

         USE tempdb; 
           GO 
             -- SQL create dynamic stored procedure

             CREATE PROCEDURE DynamicSprocToTempTable 
                AS 
                  BEGIN 
             DECLARE  @SQL NVARCHAR(MAX)
            SET @SQL = 'SELECT top (5) * from AdventureWorks.Purchasing.PurchaseOrderHeader 
            ORDER BY NEWID()' 
         -- Dynamic SQL
             EXEC Sp_executesql    @SQL 
               END 
             GO 

          -- Test stored procedure
       EXEC tempdb.dbo.DynamicSprocToTempTable 
            GO 
        -- Select into temporary table from OPENQUERY
        -- SQL select into temp table 
         SELECT * INTO   #poh 
                FROM   Openquery(SERVERALPHA,'exec tempdb.dbo.DynamicSprocToTempTable') 
         GO 

             SELECT PurchaseOrderID, VendorID, OrderDate 
                FROM   #poh 

/ *結果

PurchaseOrderID供應商ID OrderDate

2662 50 2004-05-19 00:00:00.000

2454 44 2004-05-01 00:00:00.000

2547 96 2004-05-10 00:00:00.000

901 54 2003-10-13 00:00:00.000

2675 74 2004-05-22 00:00:00.000

* /

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM