如何使用SSIS中的Pivot对行进行分组(基于客户ID)?

时间:2013-09-02 18:56:02

标签: sql-server ssis sql-server-2008-r2 bids

我正在练习SSIS,目前正致力于Pivot转型。这就是我正在做的事情。 我使用以下数据创建了一个数据源(表名:Pivot)。

enter image description here

使用SSIS,我创建了一个用于透视数据的包,其中包含以下列

PersonID --- Product1 --- Product2 --- Product3。

这是我在哪里,我能够创建到文本文件的数据透视数据。但是输出没有按PersonID分组。

我的当前输出是

enter image description here

正如我们所看到的,转换不会基于此进行分组 SetKey(PersonID:PivotUsage = 1)

我希望获得的输出是

enter image description here

根据PersonID对数据进行分组。

我在这里缺少什么?

编辑: 回到我关注的示例,我按如下方式重新排序输入数据。

enter image description here

每次输入数据是否需要按此顺序/模式进行?我遇到的大多数例子都遵循类似的模式。

2 个答案:

答案 0 :(得分:4)

是的,输入数据需要按照您正在转动的任何内容进行排序:

  

有效地转移数据,这意味着在数据中创建尽可能少的记录   尽可能输出数据集,输入数据必须在数据透视表上排序   柱。如果未对数据进行排序,则可能会进行Pivot转换   为set key中的每个值生成多个记录,即   定义集合成员资格的列。例如,如果数据集是   在名称列上旋转但名称未排序,即输出   数据集可以为每个客户提供多行,因为a   每次名称中的值更改时都会发生。

这是MSDN上Pivot Transformation文档的直接引用。 (重点补充。)

答案 1 :(得分:0)

当我第一次阅读这个答案时,我认为有序列应该是枢轴中PivotUsage = 2的列。这就是我所理解的枢轴列。但是,最终对我有用的是按轴使用数= 1的列进行排序。如果手工编写sql,这是我要分组的专栏。