2011-01-21 2 views
3

私は列の束を持っているテーブルがあります。行をコピーするSQLヘルプが必要です

IDがintデータ型であり、外部キーがない主キーが1つあります。このPKは、Identityの仕様で設定され、インクリメントとシードの両方が1に設定されていることを意味します。 「複製しない」の場合は「はい」に設定されます。重要な2つの行があります。データの年と参照番号の両方を使用して、コピーする行を特に選択するために使用します。

SQLまたはSQLとC#の組み合わせを使用して、特定の行セットを参照番号でコピーし、各行に一意の主キーIDを割り当てますか?コピーされる行の数は毎回異なる可能性がありますので、柔軟にする必要があります。システムがそれ以上問題なくIDを選ぶか、または最大IDを取得して、コピーされた行ごとに1ずつインクリメントします。私はまた、列に新しい年を入れますが、それは十分なこのタイプの列のSQLステートメントを介して各行のプライマリキーIDを設定する主な問題に比べて簡単です...

助けて!私は総合的なSQLの初心者ではありませんが、私はまだ学んでいますし、前に特定のNot For Replicationなどの問題をこのタイプの問題に遭わせたことはありません。

+0

シード= 1つの手段は、1で始まるが、インクリメントは各値を1ずつ増やす必要があることを意味します。 – JeffO

答えて

2

あなたの主キーは、(ID列を選択しないでください除く)と同じテーブルにそれらを再挿入、あなたがしたい行を選択することができ、ID列であるので:

INSERT INTO table1 (col1, col2, col3) 
SELECT (col1, col2, col3) FROM table1 
WHERE .... 
+0

私はそれを試したのでうまくいきません。そのテーブルのIdentity_insertを設定してからコードを...オフにして、このエラーを使用します:明示的な値IDENTITY_INSERTがONに設定されている場合、またはレプリケーション・ユーザーがNOT FOR REPLICATION ID列に挿入されている場合に、表 'table'のID列に指定する必要があります。 –

+0

Welp私はばかだ、そこに行く...私は実際にエラーを読んだ...作品...私は他の人が私を笑うことができるようにそのコメントを残しています。 –