我需要一个报告,我应该使用数据透视表。报告将按类别分组。使用case语句是不好的,因为有很多种类。我可以认为Northwind数据库作为样本,所有类别将是显示为列和报告将显示客户在类别中的偏好。我不知道另一个解决方案,并在Internet上查看了Sql Server的存储过程示例。除了使用大小写时,你知道一个解决方案吗?
由于
答案 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表格打开。
Excel会记住数据XML文件的路径,您只需要替换数据以刷新报告。 还有很多其他方法,我在Web服务器上使用JAVA应用程序来合并Excel模板和SQL输出。此代码是免费且开源的,但对于非JAVA开发人员https://github.com/jbaliuka/x4j-analytic无效 还有许多其他报告工具可用于生成“专业”报告。