是否可以在SSIS中加入合并相同数据库的列?

时间:2018-10-18 13:40:44

标签: database join ssms data-warehouse sql-server-data-tools

我有一个名为Customer的数据库,我有3个重要的表,这些表是:CustomerID,CustomerToBillID和CustomerName。 假设我们有一个数据集:

CustomerID = 1 with, CustomerName = John 
CustomerID = 2 CustomerName = Bert  
And the CustomerToBillID = 2 on both (so Bert only pays)

有没有办法我可以拥有两个CustomerName列?例如我想 将CustomerID与CustomerName一起使用,并将CustomerToBillID与CustomerName一起使用。

在对CustomerToBillID进行排序后,我尝试对CustomerName使用数据转换来制作CustomerNameOne和mergejoin,但这不会这样做,因为他会对同一个数据库中的两个CustomerName感到困惑,只是选择一个CustomerID或CustomerToBillID,我在Virtual Studio 2017 SSDT中使用SSIS。

如果需要,我可以提供更多信息。

编辑:我要输出以下内容:

before之前

After之后。 红色圆圈的数据有误。它具有CustomID 454而不是401 现在,客户有了CustomerName,发给客户的帐单具有CustomerNameOne列。

编辑2: right now 目前情况就是这样,红色圆圈是相同的数据库/表,因此从第二个中获取CustomerName列会使我感到困惑吗?

编辑3: simple

为了简单起见,我想执行此操作,但这不起作用,因为当CustomerID = 1击中CustomerToBill = 1时,他将采用CustomerID = 129并更改1个id 129,例如以下数据结果图像中的示例: result

红线应该是(总部)而不是(矿山)

编辑4: ??

关于评论,我按照您的要求做了,只是蓝线给了我很好的输出,但是红线与BillTOID相对应,它只是说出了CustomerID的名称。

1 个答案:

答案 0 :(得分:1)

要执行此操作,请从两个合并联接开始,一个将CustomerID转换为CustomerName,另一个将使用CustomerBillToID和CustomerName联接。此后,使用唯一键标识该行(客户,订单等),添加第三个合并联接,然后您可以从先前联接中仅输出必要的列,包括每个CustomerName。您可能还需要适当地为每个CustomerName别名。