SAP ABAP——OPEN SQL(五)【GROUPING & SORT】

举报
Thunder Wang 发表于 2023/01/31 21:42:29 2023/01/31
【摘要】 本文主要介绍一下SAP ABAP中OPEN SQL的GROUPING和SORT语句。

💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较深入的研究。


💅文章概要:本文主要介绍一下SAP ABAP中OPEN SQL的GROUPING和SORT语句


🤟每日一言:宝剑锋从磨砺出,梅花香自苦寒来。


AGGREGATE函数分类

函数 功能
AVG 取平均值
COUNT 取个数
MAX 取最大值
MIN 取最小值
STDDEV 取标准偏差
SUM 取合计

注意!所有AGG函数的括号内字段前后必须有一个空格如SUM( CARRID ),否则系统检测不出来!


GROUP BY

使用Aggregate函数之前,选择数据时需要用GROUP BY语句进行分组。GROUP BY语句是当表的特定字段中存在相同的值时就显示在一行中

SELECT <f1> <f2> <agg>...
     GROUP BY <f1> <f2>

案例代码演示

 DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID.
   WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.

效果示例图


HAVING

HAVING语句主要是用来对进行分组后进行限制条件的语句,要放在GROUP BY语句之后,下面案例演示中限制了上面SUM( PRICE )的值需要大于1000

 SELECT <f1> <f2> <agg>...
     ...
     GROUP BY <f1> <f2>
     HAVING <condition>

案例代码演示

DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) 
 > 1000.
WRITE:/ GV_CARRID,GV_PRICE.
ENDSELECT.

效果示例图


SORT

在查询数据时可以使用ORDER BY语句,则查询出来的结果会按照ORDER BY指定的字段进行排序。若不使用ORDER BY就会任意地显示排序结果。其中ORDER BY语句还有如下特点需要牢记

- 根据表地KEY值进行排序

- 只适用于SELECT*语句

- 在JOIN语句和视图中无法使用

- 若不指定排序为升序还是降序则默认为升序

SELECT <lines>*
...
ORDER BY <f1>[ASCENDING|DESCENDING] <f2>[ASCENDING|DESCENDING]....

案例代码演示(CARRID升序)

 DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) > 1000 ORDER BY  CARRID  ASCENDING.
 WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.

效果示例图

案例代码演示(CARRID降序)

 DATA:GV_CARRID TYPE SFLIGHT-CARRID,
 GV_PRICE TYPE I.

 SELECT CARRID SUM( PRICE ) INTO (GV_CARRID,GV_PRICE) FROM SFLIGHT GROUP BY CARRID HAVING SUM( PRICE ) > 1000 ORDER BY  CARRID  DESCENDING.
 WRITE:/ GV_CARRID,GV_PRICE.
 ENDSELECT.

效果示例图


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。