SELECT INTO を使用した行の挿入
SELECT INTO ステートメントでは、新しいテーブルが作成され、そのテーブルに SELECT ステートメントの結果セットが設定されます。SELECT INTO を使用すると、複数のテーブルまたはビューのデータを 1 つのテーブルに結合できます。また、リンク サーバーから選択したデータが含まれる新しいテーブルを作成することもできます。
新しいテーブルの構造は、選択リスト内の式の属性によって決まります。この例を次に示します。次の例では、各種の従業員テーブルと住所関連のテーブルから 7 つの列を選択して、テーブル dbo.EmployeeAddresses を作成します。
USE AdventureWorks2008R2;
GO
SELECT c.FirstName, c.LastName, e.JobTitle, a.AddressLine1, a.City,
sp.Name AS [State/Province], a.PostalCode
INTO dbo.EmployeeAddresses
FROM Person.Person AS c
JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = c.BusinessEntityID
JOIN Person.BusinessEntityAddress AS bea
ON e.BusinessEntityID = bea.BusinessEntityID
JOIN Person.Address AS a
ON bea.AddressID = a.AddressID
JOIN Person.StateProvince as sp
ON sp.StateProvinceID = a.StateProvinceID;
GO
ソース テーブルがパーティション分割されている場合でも、SELECT INTO を使用してパーティション テーブルを作成することはできません。SELECT INTO では、ソース テーブルのパーティション構成が使用されません。代わりに、新しいテーブルが既定のファイル グループに作成されます。パーティション テーブルに行を挿入するには、まずパーティション テーブルを作成してから INSERT INTO…SELECT FROM ステートメントを使用する必要があります。
SELECT INTO ステートメントを使用して新しいテーブルを作成した場合は、FILESTREAM 属性は転送されません。FILESTREAM BLOB がコピーされ、varbinary(max) BLOB として新しいテーブルに格納されます。FILESTREAM BLOB が 2 GB を超えると、"LOB のサイズを、許容最大サイズ 2147483647 バイトを超えて拡大しようとしています" というエラー メッセージが表示され、ステートメントの実行が停止されます。