2017-01-19 4 views
-2

クエリの結果を新しいテーブルに挿入しようとしています。多くのテーブルをSQL Serverの1つのテーブルに配置しますか?

私はこのクエリを使用しており、結果を単一のテーブルに集めたいとします。

問合せは、(私がどこかにあります)次のようになります。

USE [AdventureWorksDW2012] 

SELECT 
    OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema], 
    T.[name] AS [table_name], 
    AC.[name] AS [column_name], 
    TY.[name] AS system_data_type, 
    AC.[max_length], 
    AC.[precision], AC.[scale], 
    AC.[is_nullable], AC.[is_ansi_padded] 
FROM 
    sys.[tables] AS T 
INNER JOIN 
    sys.[all_columns] AC ON T.[object_id] = AC.[object_id] 
INNER JOIN 
    sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] 
        AND AC.[user_type_id] = TY.[user_type_id] 
WHERE 
    T.[is_ms_shipped] = 0 
ORDER BY 
    T.[name], AC.[column_id]; 
+0

もまず、そのSQLには 'insert'文はありませんが、一般的に、あなたは....に挿入する' '書き込みや'を選択しますcol1、col2 into – Tanner

+0

[既存のテーブルへのSQL Server SELECT]の可能な複製(http://stackoverflow.com/questions/4101739/sql-server-select-into-existing-table) – Tanner

答えて

0

このようなINTO句を使用してみてください:

USE [AdventureWorksDW2012] 
SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema], 
T.[name] AS [table_name], AC.[name] AS [column_name], 
TY.[name] AS system_data_type, AC.[max_length], 
AC.[precision], AC.[scale], AC.[is_nullable], AC.[is_ansi_padded] 
INTO dbo.MyNewTable 
FROM sys.[tables] AS T 
INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id] 
INNER JOIN sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] 
          AND AC.[user_type_id] = TY.[user_type_id] 
WHERE T.[is_ms_shipped] = 0 
ORDER BY T.[name], AC.[column_id] 
; 
0

使用次のようにINTO句: -

USE [AdventureWorksDW2012] 
SELECT OBJECT_SCHEMA_NAME(T.[object_id],DB_ID()) AS [Schema], 
T.[name] AS [table_name], AC.[name] AS [column_name], 
TY.[name] AS system_data_type, AC.[max_length], 
AC.[precision], AC.[scale], AC.[is_nullable], AC.[is_ansi_padded] 
Into New_table -- this line is added. 
FROM sys.[tables] AS T 
INNER JOIN sys.[all_columns] AC ON T.[object_id] = AC.[object_id] 
INNER JOIN sys.[types] TY ON AC.[system_type_id] = TY.[system_type_id] AND AC.[user_type_id] = TY.[user_type_id] 
WHERE T.[is_ms_shipped] = 0 
ORDER BY T.[name], AC.[column_id] 

サンプルコードは

Select * 
Into New_table 
From Exist_Table 

とMSDNの通りです -

SELECT ... INTOは、デフォルトのファイルグループに新しいテーブルを作成し、クエリの結果の行を に挿入します。

関連する問題