7

現在SQLServer2008を使用しており、テーブル変数を使用してステートメントを作成し、テーブルに複数の行を挿入しようとしています。現在のところ、追加する情報を4つの異なる場所(2つのselectステートメント、1つの挿入と1つの更新)に挿入する必要がありますが、単一のテーブル変数を作成できるようにしたいので、入力するだけで済みます。一度情報。任意のヘルプ/提案をいただければ幸いです。

これは私が変えようとしていることの例です。

PRINT 'Before'
SELECT  GROUPID, ModifiedBy, ModifiedDate
FROM TableXYZ
WHERE groupID in(ID1, ID2, ID3, ID4)                                                            

BEGIN TRAN


Insert into TableXYZ
 (GROUPID)
VALUES
 (ID1), (ID2), (ID3), (ID4)                                                             



UPDATE TableXYZ
SET existingdays = 15
    ,ModifiedBy = @userID
    ,ModifiedDate = @today
WHERE groupID in(ID1, ID2, ID3, ID4)                                                            


Set  @RowCount =  @@ROWCOUNT 


PRINT 'After '

SELECT  GROUPID, ModifiedBy, ModifiedDate
FROM TableXYZ
WHERE groupID in(ID1, ID2, ID3, ID4)    
4

2 に答える 2

12

これは、情報を1回だけ入力するという点であなたが探しているものですか?

DECLARE @IDList TABLE
(
    ID INT
)

INSERT INTO @IDList ( ID )
VALUES
     (ID1)
    ,(ID2)
    ,(ID3)
    ,(ID4)

PRINT 'Before'
SELECT  GROUPID, ModifiedBy, ModifiedDate
FROM TableXYZ AS T
    INNER JOIN @IDList AS L
        ON T.GroupID = L.ID

BEGIN TRAN


Insert into TableXYZ
 (GROUPID)
SELECT ID
FROM @IDList


UPDATE TableXYZ
SET existingdays = 15
    ,ModifiedBy = @userID
    ,ModifiedDate = @today
FROM TableXYZ AS T
    INNER JOIN @IDList AS L
        ON T.GroupID = L.ID


Set  @RowCount =  @@ROWCOUNT 


PRINT 'After '

SELECT  GROUPID, ModifiedBy, ModifiedDate
FROM TableXYZ AS T
    INNER JOIN @IDList AS L
        ON T.GroupID = L.ID
于 2013-01-14T17:29:08.687 に答える
1

table1からの値に挿入するにはtable2

INSERT INTO table1 ( column1 )
SELECT  col1
FROM    table2
于 2013-01-14T17:10:01.660 に答える