在Oracle中使用数据透视表的建议

时间:2008-12-13 14:01:11

标签: sql oracle plsql pivot

我需要一个报告,我应该使用数据透视表。报告将按类别分组。使用case语句是不好的,因为有很多种类。我可以认为Northwind数据库作为样本,所有类别将是显示为列和报告将显示客户在类别中的偏好。我不知道另一个解决方案,并在Internet上查看了Sql Server的存储过程示例。除了使用大小写时,你知道一个解决方案吗?

由于

4 个答案:

答案 0 :(得分:5)

获得Oracle 11G后,有一个built-in PIVOT feature。在此之前,您只能使用CASE(或DECODE)表达式。我有一篇关于如何自动完成on my blog.

的文章

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您可以使用Oracle数据磁带(http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14289/dciwhatis.htm)比案例/时间更有效地生成数据透视表,但要注意它并不容易,而且我发现文档在某些地方相当稀疏。

答案 3 :(得分:0)

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

  1. 使用Excel打开包含示例数据的XML文件
  2. 选择表格并点击“插入数据透视”
  3. 添加格式并将此文件另存为模板
  4. Excel会记住数据XML文件的路径,您只需要替换数据以刷新报告。 还有很多其他方法,我在Web服务器上使用JAVA应用程序来合并Excel模板和SQL输出。此代码是免费且开源的,但对于非JAVA开发人员https://github.com/jbaliuka/x4j-analytic无效 还有许多其他报告工具可用于生成“专业”报告。