需要数据规范化思路的帮助来创建Excel Pivot图表

时间:2013-04-12 19:38:21

标签: excel sql-server-2008 pivot database-normalization

表格中有一张Excel表格:

enter image description here

我想将其转换为:

DtWeek  WsName  CValues  TValues

这样我就可以有一个数据透视表,我可以在其中选择一个WS名称,然后查看其CValue和TValues的图表,省略所有其他WsNames。

什么是避免手动复制粘贴它的好方法!我想把它转储到sql dbs然后做一个

select WsName, 
       ,case when Current/Target='CurrentEcap' then.....

但这就是我能想到的一切。在那之后输了! 转移数据似乎使它看起来更整洁,但很快就没有任何帮助。主要是因为我不知道如何将当前值绘制为离散项而不是垂直轴上的总和或计数。 (ww / dtweek在水平方向上)。 还有其他更简单的方法吗?

1 个答案:

答案 0 :(得分:0)

我建议使用两种方法中的一种,具体取决于您必须处理多少DtWeek列。您不一定需要将Current / Target去规范化为两个不同的字段以获得所需的结果,因为您可以按列旋转此字段以获取由Current vs. Target分割的图表的数据系列。您需要在普通的Excel图表中执行此操作,但它对于数据透视表是可选的。但是,您肯定需要对DtWeek进行nornmalize,以便您可以通过数据透视表中的Row来旋转此字段。

几个DtWeek专栏 - 附加

如果只有少数,我建议将当前表加载到Access或SQL等RDBMS中,并运行多个append语句来创建新表。然后,为每个DtWeek值设置一个WHERE子句,以便只追加这些值,并创建一个名为DtWeek的新字段,其值为您指定的值(例如,在Access,DtWeek:'201310'中)。此外,如果数据是非易失性的和/或您一次获得一周的数据,则可能只需要运行一次。

许多DtWeek专栏或定期报告 - UNPIVOT

在这种情况下,我会看看DtWeek的SQL Server UNPIVOT。然后,您可以从Excel链接或运行使用CASE创建Target与Current列的其他查询。 MSDN blurb herethis文章(具有良好的前后数据视觉效果)可能会有所帮助。如果您每周获得新数据和/或数据不稳定,这是一个更好的选择。

如果您的源数据非常混乱(例如来自以非关系格式转储格式化文本的旧应用程序),您可能还需要考虑像Monarch这样的产品,您可以在其中构建自定义“陷阱”和软件为您建模数据。

祝你好运!