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

添加链接服务器后,您的脚本将如下所示

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 回答
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

首先根据蒂姆的评论添加一个链接服务器。

然后像这样的一些查询依赖于匹配规则。

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 回答