1

特定のクエリ条件に一致するすべてのレコードに対して、列 1 (作成された両方のレコード) に一意の ID を持つ複数のレコード (具体的には 2 つ) を挿入したいと考えています。挿入の残りの値は、クエリのそれぞれの列から取得する必要があります。最初の挿入では、Column2 は Column1 の元の値になり、2 回目の挿入では、Column2 は Column2 の元の値になります。

理想的には、私が求めているのは次のとおりです。

FIND RECORDS THAT MEETS CRITERIA
FOR EACH RECORD
GENERATE GUID
INSERT TWO NEW RECORDS WITH GUID AS COLUMN1, AND REMAINING COULMNS FROM 
CURRENT RECORD FOUND

RECORDS
123 abc 3 4 5
456 def 6 7 8

RECORD 1
123 abc 3 4 5

NEW RECORDS AFTER INSERTS
UID1 123 3 4 5
UID1 abc 3 4 5

ROW 2
456 def 6 7 8

NEW RECORDS AFTER INSERTS
UID2 456 6 7 8
UID2 def 6 7 8

以下の INSERT SELECT FROM は、私がやりたいことを正確に処理しますが、見つかったレコードごとに 1 つの挿入のみを処理します。

INSERT INTO table1
( 
    Column1,
    Column2,
    Column3
    Column4
    Column5
)
SELECT
    NEWID(), -- unique ID
    Column2, -- or Column1 based on which insert we are doing
    Column3, -- always column 3
    Column4, --always column 4
    Column5 -- always column 5
FROM
    table1
WHERE Column1 IS NOT NULL
AND Column1 != Column4

TSQL を介してこれを行う簡単な方法はありますか? クエリ条件を満たすレコードが数千になる可能性があるため、一括で実行する必要があります。

4

2 に答える 2