我有一个从两个不同的数据库中获取他们信息的联系人列表,我已经对这些数据库执行了Union并对其进行了排序。现在我有了一个聚合列表,如下所示:
contactid add1 add2 city phone fullname source
----- ----- ----- ----- ----- ----- -----
BOOG1 1598 Tree Drive Apt:215 NYC 718-888-9989 Andrew Sample DB1
NULL NULL Apt:215 718-888-9989 Andrew Sample DB2
BOOG6 1598 Tree Drive Apt:215 NYC 718-888-8888 Andria Toefield DB1
NULL NULL Apt:215 718-888-9888 Andria Toefield DB2
....
....
....基本上,我想使用一个脚本组件,它将比较安德鲁示例的行,如果列是空的,那么选择不是的;如果有冲突的数据,则从db2中选择数据作为替换数据。因此,最终结果应该如下所示:
contactid add1 add2 city phone fullname
----- ----- ----- ----- ----- -----
BOOG1 1598 Tree Drive Apt:215 NYC 718-888-9989 Andrew Sample
BOOG6 1598 Tree Drive Apt:215 NYC 718-888-9888 Andria Toefield
....
....
....我不知道如何在C#中开始编写脚本。我不知道如何选择行,然后比较行中的某些列。
发布于 2014-05-16 03:39:01
我不会用脚本任务来尝试这一点--跨行比较太困难了。
我将向名称列上的组添加一个模糊分组转换。这将添加一个_key_out列(以及其他列)。我会将结果放到SQL表中。
然后,我将在_key_out列上编写一个包含组BY的复杂SQL查询,并为其他列编写CASE语句,以解决您的“缺失”和“冲突”要求。
一旦你把它指向任何规模的真实世界数据集,这种设计的好处就会得到真正的回报。您无疑会遇到上面示例中更复杂的场景,例如,DB1有2个"John“行,DB2有3个"John”行。您将能够调整模糊分组参数和/或添加辅助模糊分组以打破联系。
在此过程中,您可以查询中间SQL表中的结果,以优化这些问题的处理。
https://stackoverflow.com/questions/23685804
复制相似问题