2017-12-21 11 views
-2

IDの比較を使用して、表1 - >表2から17,000のISSI値を転送する必要があります。 IDが順不同でループが必要かどうかは不明です。別の列が同じ値を持つ場合、列の各行のデータを表に挿入

表1: - sysdba.C_AccountTable

AccountProductID | ISSI | 
----------------------------- 
1QWEqwe   | 113 | 
2qweqwrdsd  | 436 | 
1Eqwe   | 113 | 

表2: - dbo.AssetTable

CustomerProductID | ISSI | 
-------------------------- 
    1QWEqwe  |  | 
    1Eqwe   |  | 
2qweqwrdsd  |  | 

期待される結果 - dbo.AssetTable

CustomerProductID | ISSI | 
-------------------------- 
    1QWEqwe  | 113 | 
    1Eqwe   | 113 | 
2qweqwrdsd  | 436 | 

CustomerProductID ISSI 
------------------------- 
1QWEqwe    113 
1Eqwe    113 
+2

予想される結果は何ですか? – Jens

+1

[データを別のテーブルにコピーする](https://stackoverflow.com/questions/13237623/copy-data-into-another-table) –

+0

テーブル1のIDをテーブル2にコピーしました。 IDが同じ場合は、表1> 2のISSI値をコピーします。 – Mrparkin

答えて

0

これは期待どおりの結果であるかもしれない

CustomerProductID ISSI 
------------------------- 
    1QWEqwe   NULL 
    1Eqwe   NULL 

の検索結果を(17000行が変更されます)この実験を確認しました

-- Table Creating start 

declare @t table(Code varchar(20), name varchar(50)) 
declare @t1 table(Code varchar(20), name varchar(50)) 

DECLARE @counter INT = 1; 
INSERT INTO @t ([Code],[Name]) VALUES(@counter , 'val 1'); 
set @counter = @counter + 1 
INSERT INTO @t ([Code],[Name]) VALUES(@counter , 'val 2'); 
set @counter = @counter + 1 
INSERT INTO @t ([Code],[Name]) VALUES(@counter , 'val 3'); 
set @counter = 1 
INSERT INTO @t1 ([Code],[Name]) VALUES(@counter , ''); 
set @counter = @counter + 1 
INSERT INTO @t1 ([Code],[Name]) VALUES(@counter , ''); 
set @counter = @counter + 1 
INSERT INTO @t1 ([Code],[Name]) VALUES(@counter , ''); 


select * from @t 
select * from @t1 

-- Table Creating End 

UPDATE T2 
SET T2. Name = T1 .Name 
FROM @t1 as T2 INNER JOIN @t as T1 
ON  T1. Code = T2 .Code; 

select * from @t1 
0
UPDATE T2 
SET T2.ISSI = T1.ISSI 
FROM dbo.AssetTable as T2 INNER JOIN sysdba.C_AccountTable as T1 
ON T1.AccountProductID = T2.CustomerProductID; 

Iを更新した後

DECLARE @C_AccountTable TABLE (AccountProductID VARCHAR(100),ISSI INT) 
INSERT INTO @C_AccountTable 
SELECT '1QWEqwe'   , 113 UNION ALL 
SELECT '2qweqwrdsd'  , 436 UNION ALL 
SELECT '1Eqwe'   , 113 

DECLARE @AssetTable TABLE(CustomerProductID VARCHAR(100) , ISSI INT) 
INSERT INTO @AssetTable 
SELECT '1QWEqwe',NULL  UNION All  
SELECT '1Eqwe' ,NULL  

SELECT * FROM @AssetTable 
UPDATE A 
SET A.ISSI=C.ISSI 
FROM @AssetTable A 
    INNER JOIN @C_AccountTable C 
     ON c.AccountProductID=A.CustomerProductID 


SELECT * FROM @AssetTable 

結果を更新する前に

関連する問題