【问题标题】:Advice Using Pivot Table in Oracle在 Oracle 中使用数据透视表的建议
【发布时间】:2010-09-26 18:52:02
【问题描述】:

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

谢谢

【问题讨论】:

    标签: sql oracle plsql pivot


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 我不使用 11G,我之前为另一个案例做过你的解决方案。老实说,我正在寻找一个像 Tony 的程序这样的解决方案,谢谢你的帮助。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多