0

Excel スプレッドシートからテーブルにデータをインポートしました。このデータの一部を変換してから、別のテーブルに挿入する必要があります。両方のテーブルのすべてが同じになりますが、一部VARCHARが型に変更されBIT、新しいテーブルにIDフィールドが追加されます。

SELECT Column1, Column2, CASE Column3 WHEN 'Y' THEN 1 ELSE 0 END AS 'Column3'
FROM MyTable

私がする必要があるのは、そのすべてのデータを取得し、元のテーブルのすべての上に ID 列を持つ新しいテーブルに挿入することです。私が問題を抱えているのはinsertステートメントです.selectステートメントを実行して挿入できることはわかっていますが、自動インクリメントINSERT INTOするフィールドを追加するのに問題があります.ID

4

3 に答える 3

1

後で新しいテーブルを使用する場合は、id 列を使用して作成します。

create table NewTable (
    NewTableId int not null identity(1, 1),
    <your columns here>
)

次に挿入します:

insert into NewTableId(<your columns here>)
    select <your columns here>
    from StagingTable

これにより、列の型を最適化する機会も得られます。

最初の挿入の増分番号が必要な場合:

select row_number() over (order by (select NULL)) as NewTableId,
       t.*
into NewTable
from t

order by定数式を使用すると、列名を使用するよりも高速に実行されることがわかりました。パフォーマンス上の利点は厳密に経験的なものであり、Microsoft が保証するものではありません。しかし、実際にはうまくいきました。

于 2013-04-17T15:22:08.003 に答える
1

あなたが使用することができます:

ROW_NUMBER() OVER(ORDER BY Column1)

あなたのselect

于 2013-04-17T15:10:35.410 に答える
1

これを試して....

 Insert into YourTableName(Column1,Column2,Column3) (SELECT Column1, Column2, CASE Column3 WHEN 'Y' THEN 1 ELSE 0 END AS 'Column3'
    FROM MyTable)

IDフィールドをIDフィールドに設定します

于 2013-04-17T15:14:14.233 に答える