PK/FK関係として共通の「MasterId」を持つ2つのテーブル#tblMasterと#tblUniqueKeysデータがあります。#tblMasterのIDと共に既存の#tblUniqueKeysデータを更新する方法
create Table #tblMaster (MasterId INT IDENTITY(100,1), Details VARCHAR(10), DetectDate DATE, UpdateBy VARCHAR(10));
insert into #tblMaster(Details,DetectDate,UpdateBy) values ('DT12', '01/14/2016', 'XYZ')
create Table #tblUniqueKeys (UqId INT IDENTITY(10,1), MasterId INT, UniqueKey VARCHAR(10), DetectDate DATE);
insert into #tblUniqueKeys(MasterId, UniqueKey, DetectDate) values (100, 'uq1', '01/14/2016')
ここでは、「Uniquekey」列とともにデータとともに#tblDataという表があります。
Create Table #tblData (Id int, Details VARCHAR(10), UniqueKey VARCHAR(10), DetectDate DATE, UpdateBy VARCHAR(10));
insert into #tblData values (1, 'DT1', 'uq1', '01/15/2016', 'abc')
"UNIQUEKEY"(UQ1) "#tblUniqueKeys" "#tblMaster" テーブルからID "MasterId" と共に表中に既に存在します。
"#tblMaster"に "#tblData"データを挿入する必要があります。その後、IDが生成され、 "MasterId"と共に既存の#tblUniqueKeys列データを更新する必要があります。テーブルの
電流出力#tblMasterと#tblUniqueKeys出力以下を求めて
、
カーソルを通じ、私が取得することができています私の出力、しかし私はそう探しています私のような他のソリューションは、マージのような...
デモのデータとして、私は各テーブルに1-1レコードがありますが、私の実際のケースでは、100-10Kのデータが可能です。ありがとう!!!!あなたが希望する結果を達成することができますOutput
句の助けを借りて
Create Table #tblData (Id int, Details VARCHAR(10), UniqueKey VARCHAR(10), DetectDate DATE, UpdateBy VARCHAR(10));
insert into #tblData values (1, 'DT1', 'uq1', '01/15/2016', 'abc')
create Table #tblMaster (MasterId INT IDENTITY(100,1), Details VARCHAR(10), DetectDate DATE, UpdateBy VARCHAR(10));
insert into #tblMaster(Details,DetectDate,UpdateBy) values ('DT12', '01/14/2016', 'abc')
create Table #tblUniqueKeys (UqId INT IDENTITY(10,1), MasterId INT, UniqueKey VARCHAR(10), DetectDate DATE);
insert into #tblUniqueKeys(MasterId, UniqueKey, DetectDate) values (100, 'uq1', '01/14/2016')
DECLARE @Details VARCHAR(10), @DetectDate DATE, @UpdateBy VARCHAR(10), @UniqueKey VARCHAR(10)
DECLARE @iIdentity INT, @UqId INT
DECLARE db_cursor CURSOR FOR
SELECT Details, UniqueKey, DetectDate, UpdateBy FROM #tblData ORDER BY Id
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @Details, @UniqueKey, @DetectDate, @UpdateBy
WHILE @@FETCH_STATUS = 0
BEGIN
--#tblMaster TABLE INSERT--
INSERT INTO #tblMaster(Details, DetectDate, UpdateBy) VALUES (@Details, @DetectDate, @UpdateBy)
SELECT @iIdentity=SCOPE_IDENTITY()
--#tblUniqueKeys TABLE UPDATE--
IF EXISTS(SELECT 1 FROM #tblUniqueKeys WHERE UniqueKey = @UniqueKey)
BEGIN
SELECT @UqId = UqId FROM #tblUniqueKeys WHERE UniqueKey = @UniqueKey
UPDATE #tblUniqueKeys SET MasterId = @iIdentity, DetectDate = @DetectDate WHERE UqId = @UqId
END
FETCH NEXT FROM db_cursor INTO @Details, @UniqueKey, @DetectDate, @UpdateBy
END
CLOSE db_cursor
DEALLOCATE db_cursor
select * from #tblMaster
select * from #tblUniqueKeys
DROP TABLE #tblData;
DROP TABLE #tblMaster;
DROP TABLE #tblUniqueKeys;