在 SSIS 数据流中使用不同的目标列进行逆透视

问题描述 投票:0回答:1

我有一个像这样的数据透视表;

DAccount, DObject, DDep, DSum, CAccount, CObject, CDep, CSum
4851,301,43,201407.42,4813,121,55,-201406.42

我喜欢将其取消旋转,所以它看起来像这样;

Account, Object, Dep, Sum
4851,301,43,201407.42
4813,121,55,-201406.42

我尝试搜索有关 unpivot 的提示,但所有示例都使用相同的目标列。我认为我对枢轴键值理解有问题。
我已将目标列设置为帐户、对象、Dep 和总和(DAccount 和 CAccount 上的帐户等)。在透视键值中,它是默认值,即与输入列相同。
当我按“确定”时,它说键值需要完全匹配,我尝试更改它们,但随后它说它们需要是唯一的。

感谢所有帮助!

ssis sql-server-data-tools unpivot
1个回答
0
投票

您需要连续将一个column_name及其值逆透视1。

例如,这会将两个列名“nationality_1”和“nationality_2”放入一个字符串列“column_name”中,“value”列将是新列,逐行显示其值,person_id 位于每个值。

enter image description here

如果你对四列中的每一列都做同样的事情,并将它们合并到 person_id 上,你就可以达到目的。

在示例中,这意味着将“value”替换为 1.“Account”,将“nationality_1”替换为“DAccount”,将“nationality_2”替换为“CAccount”,底部的“column_name”可以保持原样.

对其他三个“Object”、“Dep”、“Sum”执行相同操作。你会得到一个看起来像这样的结构:

person_id column_name Account
1 DAccount 4851
2 CAccount 4813

..其余三个以此类推。

然后,您可以合并连接“person_id”上的四个和列名称的第一个字母。

person_id column_name_first_letter Account Object Dep Sum
1         D                        4851    301    43   201407.42
2         C                        4813    121    55  -201406.42
© www.soinside.com 2019 - 2024. All rights reserved.