0

SQLステートメントがあります:

INSERT INTO Table1
(
  A,
  B,
  C,
  D,
)
SELECT id, name1, middlename1, lastname1 FROM Table2

このINSERTINTOステートメントをループに入れて、反復するたびに、Table2の列が次のように変化するようにします。

INSERT INTO Table1
(
  A,
  B,
  C,
  D,
)
SELECT id, name2, middlename2, lastname2 FROM Table2

これを行う方法はありますか?

編集 -

Table2次の列があります。

Name1, Name2, Name3, etc.

これらは、ROWSとして別のテーブルに入れる必要があります。

Name1

Name2

Name3

...
4

1 に答える 1

3

テーブルを挿入するには、テーブルのピボットを解除する必要があるようです。これにより、変換が行に変換されます。

SQL Serverのバージョンに応じて、さまざまなオプションがあります。

SQL Server 2008以降を使用している場合は、次を使用できCROSS APPLYますVALUES

insert into table1 (A, B, C, D)
select t.id,
  c.col1,
  c.col2,
  c.col3
from yourtable t
cross apply
(
  values 
    (name1, middlename1, lastname1),
    (name2, middlename2, lastname2),
    (name3, middlename3, lastname3)
) c (col1, col2, col3);

UNION ALLまたは、クエリを使用できます。

insert into table1 (A, B, C, D)
select id, name1 col1, middlename1 col2, lastname1 col3
from yourtable
union all
select id, name2 col1, middlename2 col2, lastname2 col3
from yourtable
union all
select id, name3 col1, middlename3 col2, lastname3 col3
from yourtable
于 2013-03-13T17:51:33.020 に答える