1

我正在使用查找转换来比较来自不同服务器的两个表。我还想在目标不匹配输出表中添加查找列值,如下所示。例如表 1 是我需要检查错误数据的表。

ID  | Name  | Address
--------------------------
 1  | Ramya | 01 - London
--------------------------
 2  | Vidya | India

下面是我的查找表

ID  | Name  | Address
--------------------------
 1  | Ramya | London
--------------------------
 22  | Vidy | India

我希望我的目的地(另一个新表)具有不匹配行的数据

ID  | Name  | Address      | LID    | LName   |  LAddress 
---------------------------------------------------------
 1  | Ramya | 01 - London  | NULL   | NULL    |  London
---------------------------------------------------------
 22  | Vidy | India        | 2     | Vidya    |  NULL

或类似的东西::

ID  | Name  | Address      | Mismatch|
-------------------------------------
 1  | Ramya | 01 - London  | Address: London | 
-------------------------------------
 22  | Vidy | India        | ID: 2 and Name: Vidya| 
4

1 回答 1

0

您能否在 SSIS 中处理之前识别不匹配的记录。这是一些用于创建示例数据并提供匹配/不匹配记录的 SQL。然后,SSIS 可以处理不匹配的记录,并使用 Name 进行额外的查找以查看这些记录是否匹配。但是,这可能会有多个匹配项!

create table #temp1(
id1 integer,MyName1 varchar(50),MYaddress1 varchar(50)
)
create table #temp2(id2 integer,MyName2 varchar(50),MYaddress2 varchar(50)
)
insert into #temp1  (id1,Myname1,myaddress1)
values (1,'Ramya','01 - London')
insert into #temp1  (id1,Myname1,myaddress1)
values (2,'Vidya','India')
select * from #temp1

insert into #temp2  (id2,Myname2,myaddress2)
values (1,'Ramya','London')
insert into #temp2  (id2,Myname2,myaddress2)
values (22,'Vidya','India')
select * from #temp2
;
with mycte1 as
(SELECT 
a.id1,a.myName1,a.MyAddress1,b.id2,b.myName2 as LName,b.myAddress2 as LAddress,
'No Match' as Match
from #temp1 a left join #temp2 b
on a.myname1 = b.myname2 and 
a.myAddress1 = b.myAddress2
where b.myaddress2 is null or b.myname2 is null
),
mycte2 as
(SELECT a.id1,a.myName1,a.MyAddress1,b.id2,b.myNAme2 as LName,
b.myAddress2 as LAddress,'Match' as Match
from #temp1 a inner join #temp2 b
on a.myname1 = b.myname2 and 
a.myAddress1 = b.myAddress2
)
select *  from mycte2
union 
select * from mycte1

drop table #temp1
drop table #temp2
于 2015-09-01T10:34:16.437 回答