0

テーブルTABLE1に次のデータがあります

SessionID
S1
S2
S3

別のTABLE2に次のデータがあります

EmployeeID | Session
1          | NULL
2          | NULL
3          | NULL

私がしたいのは、各行の例を更新/挿入することです

UPDATE table2 SET Session= (SELECT SessionID FROM TABLE1)
INSERT INTO( COPY each row and insert 2nd row session id from table1)

期待される結果: TABLE2

EmployeeID | Session
1          | S1
2          | S1
3          | S1
1          | S2
2          | S2
3          | S2
1          | S3
2          | S3
3          | S3

どんな洞察も役に立ちます。

ありがとうございました。

4

3 に答える 3

2

現在TABLE2にある各行とTABLE1の各行のすべての組み合わせに対して、TABLE2に1つの行が必要なようです。もしそうなら...

BEGIN TRAN

SELECT * INTO #temp FROM TABLE2

DELETE TABLE2

INSERT TABLE2
(
    EmployeeID,
    Session
)
SELECT
    temp.EmployeeID,
    TABLE1.SessionID
FROM TABLE1 CROSS JOIN #temp temp

DROP #TEMP

COMMIT TRAN
于 2012-05-25T06:51:08.340 に答える
1

別の Employee テーブルを作成することをお勧めします。EmployeeSession (TABLE2) にデータを挿入するには:

INSERT INTO EmployeeSession ( EmployeeID, SessionID )
    SELECT Employee.ID, [Session].ID
    FROM Employee, [Session]
于 2012-05-25T06:56:15.167 に答える
0

MERGEステートメントが役立つと思います:

MERGE INTO TABLE2 t2
    USING (SELECT t2.EmployeeID, t1.SessionID
FROM TABLE2 t2
CROSS JOIN TABLE1 t1) t
        ON t2.EmployeeID = t.EmployeeID AND t2.Session = t.SessionID
    WHEN NOT MATCHED BY TARGET THEN
        INSERT (EmployeeID, Session) VALUES(t.EmployeeID, t.SessionID)
    WHEN NOT MATCHED BY SOURCE THEN
        DELETE
;
于 2012-05-25T07:30:49.753 に答える