【SQLServer】一部のカラム値を変更しテーブルを作成

みなさんは既存のテーブルのレコードで、あるカラムを変更して、新しいテーブルに追加したいということはありますでしょうか?

例えば。。。

Testテーブル「()は、データ型 」

Year (INT)TestName (VARCHAR(30))SchoolYear(INT)PassingScore(INT)
2020現代文160
2020数学A260
2020日本史B380
2021化学基礎165
2022化学270
2022古文260

このようなテーブルがあったとして、以下のように2020年のレコードを取り出して、新しいテーブルとして保存したい。

NewTestテーブル

Year (INT)TestName (VARCHAR(30))SchoolYear(INT)PassingScore(INT)
2020現代文160
2020数学A260
2020日本史B380

そのとき、1からINSERT INTO ステートメントを実行するのは、面倒です。

今回はそのような時、どうすればよいか紹介します。

本記事では、SQLServerを対象としています。他のRDBでは異なる可能性があります。

SELECT INTOステートメント

SELECT INTOステートメントを使って、既存のテーブルから取得したいレコードを抽出し、新しいテーブルに保存できます。

SELECT 
 *
INTO NewTest
FROM Test
WHERE Year = 2020;

SELECTのあとに取得したいカラム。今回はすべて選択しています。

カラムを指定すれば、指定したカラムで新しいテーブルも作成できます。

INTOのあとに新しいテーブル名。

FROMのあとに既存のテーブル名。

WHERE Year = 2020で既存のテーブルから2020年のものを抽出しています。

これで、2020年度のレコードが入ったNewTestテーブルが作成されました。