像这样交叉汇总的表格!~要用那种控件?或者是sql语句!!!
数据库是这样的~
希望大家帮帮忙!谢谢谢谢!

解决方案 »

  1.   

    基本上报表工具都可以实现这个功能,用着顺手的推荐ReportMachine或者FastReport
      

  2.   

    SQL语法用Case When行列转换
      

  3.   

    打印控件可以用FastReport.如果是想在界面中表现,可以用StringGrid、ListView等控件。或者其他第三方的控件都可以。使用DBGrid达到这个效果是不太可能的!意思就是使用能够自己控制每一行和每一列的显示控件!
      

  4.   

    晕哦,我工作中经常需要把表二的格式变为表一的格式,我用的数据库是oracle,先decode,再sum,再group by,挺麻烦的,二楼 case when的方法虽然没试过,但感觉应该是可以实现的。本人坚信单凭SQL就可以实现了,大不了多套几层而已。记得N久以前学dbase的时候,list加某个参数就可以把行、列转过来的~可惜现在很多数据库都不支持了。
      

  5.   

    我明白楼主的意思了。
    对于固定栏母的,比如你例子里产品、方法等等,这些是固定的话,可以这样做:SELECT
    A AS 产品,
    '' AS 方法,
    '' AS Other
    FROM Table1
    WHERE A='产品'
    UNION
    SELECT
    '',
    A,
    ''
    FROM Table1
    WHERE A='方法'
    UNION
    SELECT
    '',
    '',
    A
    FROM Table1
    WHERE A='其他'

    如果栏目不固定,目前我不知道单纯通过SQL怎么实现,我都是通过FastReport或者ReportMachine的交叉报表来完成的。
      

  6.   

    上面的SQL逻辑意义上有问题,改一下,明白这个意思就行了。
    SELECT
    Field0 AS 产品,
    '' AS 方法,
    '' AS Other
    FROM Table1
    WHERE Field1='产品'
    UNION
    SELECT
    '',
    Field0,
    ''
    FROM Table1
    WHERE Field1='方法'
    UNION
    SELECT
    '',
    '',
    Field0
    FROM Table1
    WHERE Field1='其他'