1

次のデータを含むテーブルがあります。

CUSIP   SEDOL   DESC
1111    NULL    ABC Corp
1234    NULL    ABCD Corp
NULL    12      ABCDE Corp

これで、別のデータベースサーバーに別のテーブルがあります。

CUSIP   SEDOL   DESC
1111    18      ABC Corp
1234    19      ABCD Corp
1246    12      ABCDE Corp

別のデータベースサーバーのテーブルで提供されている値に基づいて、最初のテーブルにNULL値を入力するにはどうすればよいですか?(SQL Server 2005を使用しています)

4

5 に答える 5

2
update table1 set
sedol = (select sedol from database2.table2 where desc = table1.desc)
where sedol is null;

何が重要かは質問から明らかではないcusipため、代わりに次のものが必要になる場合があります。

update table1 set
sedol = (select sedol from database2.table2 where cusip = table1.cusip)
where sedol is null;

cusipを更新するには、次を使用します。

update table1 set
cusip = (select cusip from database2.table2
         where desc = table1.desc
         and sedol = table2.sedol)
where cusip is null;
于 2012-11-12T22:29:16.367 に答える
0
Update BadTable set BadTable.SEDOL=Coalesce(BadTable.SEDOL,GoodTable.SEDOL) from GoodTable where GoodTable.[DESC]=BadTable.[DESC]

多分

where GoodTable.[CUSID]=BadTable.[CUSID]
于 2012-11-12T22:30:55.903 に答える
0
update table1 t1
set t1.sedol 
   = coalesce (t1.sedol,(select top 1 sedol 
                     from table2 
                     where t1.cusip = cusip
                     and t1.desc = desc))
于 2012-11-12T22:32:10.553 に答える
0

まず、Timのコメントに従って、リンクサーバーを追加します。

次に、このようないくつかのクエリは、一致するルールに依存します。

Update
  table1
Set
  Sedol = t2.Sedol
From
  table1 t1
    Inner Join
  server2.db2.schema2.table2 t2
    On t1.CusIP = t2.CusIP and t1.[Desc] = t2.[Desc] And t1.Sedol Is Null
于 2012-11-12T22:33:34.760 に答える
0

リンクサーバーを追加すると、スクリプトが表示されます

MERGE dbo.your_table AS target
USING [AnotherServer].dbo.your_table AS source
ON (target.[DESC] = source.[DESC])
WHEN MATCHED AND (target.CUSIP IS NULL OR target.SEDOL IS NULL)
  THEN UPDATE SET target.CUSIP = source.CUSIP,
                  target.SEDOL = source.SEDOL;
于 2012-11-14T13:57:44.830 に答える