• AS400 Sequel View报表学习笔记 (一)


    在使用Sequel View 的时候,一直想解决一个问题,就是像QUERY一样在数据列表后面加一行Summary行,以作为数据的汇总行。

    昨天研究了一下,发现用Union功能可以实现这个需求。现在来分享一下经验。

    未加入汇总行前,Sequel View的定义是这样的:

    1 SELECT DOCNO, RFDCNO, PARTNO, QTY, UNCOST
    2  FROM ENIXLIB/PCPGRR0
    3  WHERE STORE=&STORE AND DOCNO=&DOCNO
    4 ORDER BY RFDCNO

    现在有个需求是需要在这个列表后面,加入一行Total amount的汇总行SUM(QTY * UNCOST)。

    为了实现这个汇总行,我想到了UNION。

    UNION可以把SELECT的两个结果集合并显示出来。但是UNION有一个要求,就是两个SELECT都必须有相同的列才能合并。

    而此处第二个SELECT汇总,肯定是需要用到GROUP BY,而SELECT中的列都得在GROUP BY里面出现,为了解决这个UNION和GROUP BY的矛盾,我建立了几个虚拟的列(以空字符串来代替前面的列)。具体实现如下:

    1 SELECT DOCNO, RFDCNO, PARTNO, QTY, UNCOST
    2 FROM ENIXLIB/PCPGRR0
    3 WHERE STORE=&STORE AND DOCNO=&DOCNO
    4 UNION
    5 SELECT 'SUMMARY: ' NAME(DOCNO), ' ' NAME(RFDCNO), ' ' NAME(PARTNO), SUM(QTY) NAME (QTY1), SUM(QTY * UNCOST) NAME(UNCS)
    6 FROM ENIXLIB/PCPGRR0
    7 WHERE STORE=&STORE AND DOCNO=&DOCNO
    8 GROUP BY STORE, DOCNO
    9 ORDER BY DOCNO, RFDCNO

    这样,就实现了明细与SUMMARY汇总行的UNION集合。

    (完)

  • 相关阅读:
    【BUUCTF】WEB SECRET FILE
    你是如何让函数返回IEnumerable<T>的
    对Closure的再思考
    旋转的女郎
    Tools in Visual Studio 2010
    解析命令行的正则表达式
    Closure中关于递归的一点补充
    对C++和C#中多态及类型转换的理解(二)
    对C#和C++0x中Lamda表达式的简略对比
    对C++和C#中多态及类型转换的理解(一)
  • 原文地址:https://www.cnblogs.com/enixyu/p/2051756.html
Copyright © 2020-2023  润新知