Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建Excel数据透视图需要数据规范化方面的帮助_Excel_Sql Server 2008_Pivot_Database Normalization - Fatal编程技术网

创建Excel数据透视图需要数据规范化方面的帮助

创建Excel数据透视图需要数据规范化方面的帮助,excel,sql-server-2008,pivot,database-normalization,Excel,Sql Server 2008,Pivot,Database Normalization,我有一张Excel表格,格式如下: 我想把它转换成: DtWeek WsName CValues TValues 所以我可以有一个透视图,在这里我可以选择一个WS-name,然后看到它的CValue和TValues图,省略所有其他的WSName 这是避免手动复制粘贴的好方法!我考虑将其转储到SQLDBS中,然后执行 select WsName, ,case when Current/Target='CurrentEcap' then..... 但这就是我所能想到的。之

我有一张Excel表格,格式如下:

我想把它转换成:

DtWeek  WsName  CValues  TValues
所以我可以有一个透视图,在这里我可以选择一个WS-name,然后看到它的CValue和TValues图,省略所有其他的WSName

这是避免手动复制粘贴的好方法!我考虑将其转储到SQLDBS中,然后执行

select WsName, 
       ,case when Current/Target='CurrentEcap' then.....
但这就是我所能想到的。之后就输了! 在一段时间内,转换数据似乎使它看起来更整洁,但很快这也没有帮助。主要是因为我不知道如何将当前值绘制为离散项,而不是垂直轴上的总和或计数。(水平方向为ww/dtweek)。
还有其他更简单的方法吗?

我推荐两种方法中的一种,具体取决于您必须处理多少DtWeek列。您不必将当前/目标反规范化为两个不同的字段以获得所需的结果,因为您可以按列旋转此字段以获得图表的数据系列,该数据系列按当前与目标划分。您需要在普通Excel图表中执行此操作,但在透视图中是可选的。但是,您肯定需要取消DtWeek的NMalize,以便在透视表中按行透视该字段

几个DtWeek列-追加

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

许多DtWeek专栏或定期报告-取消PIVOT

在本例中,我将在DtWeek前查看SQL Server UNPIVOT。然后,您可以从Excel链接,也可以运行附加的查询,该查询使用CASE创建目标列和当前列。MSDN简介或文章(有一个很好的前后数据可视化)可能会有所帮助。如果每周都有新数据和/或数据不稳定,这是一个更好的选择

如果您的源数据是一个真正的混乱(例如,从一个遗留的应用程序中,以非关系格式将格式化的文本转储),您可能还需要考虑一个类似于MARCARCH的产品,在那里您构建自定义的“陷阱”,软件为您建模数据。p>


祝你好运

你走在正确的轨道上,数据确实需要重新塑造。通常这在源代码处更容易实现。您是否有能力与发送此报告的人员/系统交谈,并请求您描述的4列表格?它是由某些软件以更糟糕的形式生成的。我包括的屏幕是在我清理了很多之后。然后我会继续写一个宏,把它转换成你想要的形式。不太难。从C2单元格开始,将C1、A2、C2、C3单元格复制到空白工作表上的一行中,向右移动一个单元格,重复,一直移动到行的末尾,从下两行开始。是否有任何方法可以在透视图中绘制列值而不进行任何求和?您的标记中没有VBA。你愿意接受这个想法吗?最好只将其保存在Excel中,而不涉及SQL Server。