3

我需要一个报告,我应该为它使用数据透视表。报告将按类别分组。在声明时使用案例不好,因为有很多类别。你可以将 Northwind 数据库视为示例,所有类别将显示为列和报告将显示客户在类别中的偏好。我不知道另一种解决方案,并在 Internet 中看到了用于 Sql Server 的存储过程的示例。除了使用案例之外,你知道一个解决方案吗?

谢谢

4

4 回答 4

5

一旦您获得了 Oracle 11G,就会有一个内置的 PIVOT 特性。在此之前,您只能使用 CASE(或 DECODE)表达式。我的博客上有一篇关于如何自动执行此操作的文章。

于 2008-12-14T16:40:06.207 回答
0

在 SQL 中进行行/列交换是很痛苦的。你想把每一行变成一列,你必须明确要求。所以如果你有很多类别,你的查询会很长,并且每次添加/删除/更改类别时它都会改变(这可能是你提到的 CASE 方法)。您可以编写一个存储过程来生成,它将为您生成该查询(或以其他方式构建您想要的结果集),但老实说,这种方式是疯狂的(并且可能是糟糕的性能)。

将数据作为行,就像 SQL 肯定想要给它一样,然后让您的应用程序将其转换为列。这比强迫 SQL 做它不想做的事情要容易得多。

于 2008-12-14T05:21:45.390 回答
0

您可以使用 Oracle Data Cartridges ( http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm ) 比 case/when 更有效地生成数据透视表,但请注意这并不容易东西,而且我发现文档在某些地方相当稀疏。

于 2008-12-14T10:15:39.010 回答
0

我使用报告工具来生成报告,它有助于保持视图和查询的清洁且无需格式化。通常用户要求使用 Excel,而 Excel 本身就是一个非常好的报告工具。Excel 有很多方法可以导入数据,但我建议使用 XML 作为输入,因为您可以将其作为常规 Excel 表格打开。

  1. 使用 Excel 打开带有示例数据的 XML 文件
  2. 选择表格并单击“插入数据透视表”
  3. 添加格式并将此文件另存为模板

Excel 会记住数据 XML 文件的路径,您只需替换数据即可刷新报告。还有很多其他的方法,我在 Web 服务器上使用 JAVA 应用程序来合并 Excel 模板和 SQL 输出。此代码是免费和开源的,但对非 JAVA 开发人员没有帮助https://github.com/jbaliuka/x4j-analytic 还有许多其他报告工具可以生成“专业”报告。

于 2014-02-06T20:47:09.260 回答