zoukankan      html  css  js  c++  java
  • 转载:水晶报表中几种交叉表的实现方法

    转自:http://www.cnblogs.com/babyt/archive/2009/03/12/1184249.html

    交叉表,顾名思义,就是行和列交叉,用于将行上的数据,作为列指标来呈现。

    用一个图直观的说明一下,就是将图1中的数据样式


    最终呈现为如图2的效果



    实际在使用中,我们可以用两种方式来实现这个效果

    一是在数据库端用SQL将数据组织成交叉表,然后对这个数据以普通的报表形式呈现。
    在这里,我摘录了网上一篇写的比较直白的文章,请参考此链接。
    http://server.chinabyte.com/474/2591974.shtml

    根据数据的情况,交叉后的列可能是固定的,也可能是不固定的
    要注意写法,还要注意不同的数据库的SQL也是不一样的。如SQL Server和Oracle就有不同。
    这里主要是提供个思路。

    二是依靠水晶报表来直接实现,我在文章的最后提供了一个操作视频,大家可以看实际的操作步骤。
    在这里需要说明一下的是,不是所有的数据,都那么标准,所以需要做一些修正。
    水晶报表不仅仅支持从表里取数据,还支持View和SQL命令,存储过程等
    所以可以使用View或者SQL命令来实现,在视频的例子中,我就用了这个例子
    原始数据是这样的(图3),


    为了适用交叉表,将其修正为图1所示。
    我做了View来简化后续的操作,对于后续操作来说,使用表和view的效果是一样的。
    view脚本为:

    select 年份,地区,指标,'最大值' as 数值类别,最大值 as 数值 from test_4
    UNION 
    select 年份,地区,指标,'最小值' as 数值类别,最小值 as 数值 from test_4;


    在视频最后,我对交叉表上的一些设置进行了操作,大家可以参考。如:
    如何去除行、列上的合计字段
    如何去掉交叉表左上角的缺角等一些基本操作

    特别说明一下,要从交叉表导出一张完美的Excel是比较困难的
    如果有这种需要,建议使用使用SQL交叉的方式,用一般的报表方式来实现.

    请在此处下载操作视频,解压缩密码为:babyt
    /Files/babyt/CR20080505.rar
    (本视频为http://topic.csdn.net/u/20080505/17/2ff3406c-9240-40ef-b361-1490aa802581.html而作,比一般性的交叉表稍嫌复杂)

     

     


  • 相关阅读:
    316 Remove Duplicate Letters 去除重复字母
    315 Count of Smaller Numbers After Self 计算右侧小于当前元素的个数
    313 Super Ugly Number 超级丑数
    312 Burst Balloons 戳气球
    309 Best Time to Buy and Sell Stock with Cooldown 买股票的最佳时间含冷冻期
    Java 类成员的初始化顺序
    JavaScript 全局
    HTML字符实体
    Java中的toString()方法
    JavaScript 弹窗
  • 原文地址:https://www.cnblogs.com/yangfan/p/1658787.html
Copyright © 2011-2022 走看看