我需要一个报告,我应该为它使用数据透视表。报告将按类别分组。在声明时使用案例不好,因为有很多类别。你可以将 Northwind 数据库视为示例,所有类别将显示为列和报告将显示客户在类别中的偏好。我不知道另一种解决方案,并在 Internet 中看到了用于 Sql Server 的存储过程的示例。除了使用案例之外,你知道一个解决方案吗?
谢谢
一旦您获得了 Oracle 11G,就会有一个内置的 PIVOT 特性。在此之前,您只能使用 CASE(或 DECODE)表达式。我的博客上有一篇关于如何自动执行此操作的文章。
在 SQL 中进行行/列交换是很痛苦的。你想把每一行变成一列,你必须明确要求。所以如果你有很多类别,你的查询会很长,并且每次添加/删除/更改类别时它都会改变(这可能是你提到的 CASE 方法)。您可以编写一个存储过程来生成,它将为您生成该查询(或以其他方式构建您想要的结果集),但老实说,这种方式是疯狂的(并且可能是糟糕的性能)。
将数据作为行,就像 SQL 肯定想要给它一样,然后让您的应用程序将其转换为列。这比强迫 SQL 做它不想做的事情要容易得多。
您可以使用 Oracle Data Cartridges ( http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm ) 比 case/when 更有效地生成数据透视表,但请注意这并不容易东西,而且我发现文档在某些地方相当稀疏。
我使用报告工具来生成报告,它有助于保持视图和查询的清洁且无需格式化。通常用户要求使用 Excel,而 Excel 本身就是一个非常好的报告工具。Excel 有很多方法可以导入数据,但我建议使用 XML 作为输入,因为您可以将其作为常规 Excel 表格打开。
Excel 会记住数据 XML 文件的路径,您只需替换数据即可刷新报告。还有很多其他的方法,我在 Web 服务器上使用 JAVA 应用程序来合并 Excel 模板和 SQL 输出。此代码是免费和开源的,但对非 JAVA 开发人员没有帮助https://github.com/jbaliuka/x4j-analytic 还有许多其他报告工具可以生成“专业”报告。