当前位置: 首页 > news >正文

SAP-ABAP-SELECT语法SQL语法详解

  1. select语句的基础语法格式

SELECT <FIELD>  FROM <TABLE>  WHERE <CONDITION>  INTO  <LT_TAB>

<FIELD>代表想要搜索的表字段,用TABLE~FIELD表示,当FIELD唯一确认在一个表时可省略TABLE指定

<TABLE>代表从哪个取数据

<CONDITION> 代表取出的数据要满足哪些条件

<LT_TAB> 代表存储在本程序的哪个位置

   代码示例

   上图代码的意思是从SPFLI表取出CARRID字段和CONNID字段,限制条件是DEPTIME大于120000,取出来的数据存到LT_TAB字段。

若想取出所有数据可以把改成

若想新增其他限制条件可以往后面并列条件其他

  1. SELECT 的连表

连表的目的是一次取出多个表的数据,根据某些字段关联其他表

INNER JOIN :全连接,连接的两个表连接字段必须能一一对应上,此条数据才能连表成功,连表失败的数据不会展示在结果表中

LEFT JOIN :左连接,连接的两个表连接字段必须能一一对应上,此条数据才能连表成功,以连接表为主表,连表失败后主表数据可以取出来,但是被连表数据无法取出来

RIGHT JOIN :右链接,连接的两个表连接字段必须能一一对应上,此条数据才能连表成功,以连接表为主表,连表失败后主表数据无法取出来,但是被连表数据可以取出来

以下列数据为例展示表连接,采购订单Z300138357有14个行项目,只有12行进行了收货,其中20行和30行没有收货,具体数据如下图所示

若是全连接,未收货的数据便不会取出来,可以看到下图结果表中没有20行和30行

若是左连接,未收货的数据会取出来,可以看到下图结果表中有20行和30行,但是表中取EKBE的字段不会展示出来

若是左连接,未收货的数据会取出来,可以看到下图结果表中有20行和30行,但是表中取EKPO的字段不会展示出来

 

  1. 聚合函数MAX,MIN,AVG

求某个数据最大值,最小值,平均值可以在字段清单使用聚合函数+括号+要求和的字段+字段别名+GROUP BY 分组,具体代码及结果如下图所示

  1. 聚合函数COUNT

求出满足条件是数据条目数,COUNT后面不加字段名称用*表示条目数, COUNTAS LINES + GROUP BY 分组具体代码及结果如下图所示

  1. 聚合函数SUM

SUM后面加需要求和的字段,不能是文本字段,GROUP BY 分组具体代码及结果如下图所示

  1. 数字类型字段在SELECT中的运算符

SELECT 中支持的运算符有加法,减法,和乘法,没有除法,运算的对象可以是所取的表中是数据(只能是数字类型),也可以是固定数字,不能是变量,多重计算要常用括号。示例代码 如下

  1. CHAR类型字段拼接拆分操作

拼接拆分字段仅能针对char类型字段,拼接字段使用&&做拼接,可以拼接常量,表中字段,但不可拼接sql外部变量。拆分字段使用SUBSTRING函数,该函数有三个参数,第一个参数是被拆分的字段,第二个参数是从第几位开始,包括该位,第三个参数是拆分多少位。示例代码及运行结果如下

  1.       其他的数字运算符号

DIV(arg1, arg2)         取整,两个数字必须是整数才能用

MOD(arg1, arg2)     取余,两个数字必须是整数才能用

CEIL(arg)   不小于arg值的最小整数,进1。

FLOOR(arg)  不大于arg值的最小整数,舍1。

DIVISION(arg1, arg2, dec)  arg1除 arg2的结果保留dec位小数,

ROUND(arg, pos)  四舍五入。 如果pos大于0,则将值四舍五入到小数点分隔符右侧的pos位置。 如果不是这样,则将小数点分隔符左侧的位置abs(pos)+1四舍五入。 如果位置数不够,则结果为0。 

9.FOR ALL ENTRIES IN 根据内表参数查询后台表数据

这个语法可以根据内表参数每一行精确的匹配后台表数据,但是使用它需要注意几点

  1. 在使用前必须判断非空,否则select语句相当于没有where条件限制,将取出表中所有数据。
  2. 搜索出的数据必须必须包含该表的全部主键,该方法自带去重功能,完全相同数据将会被删除。
  3. 用来做条件的内表不应该太大,内表每存在一行数据代表select语句多加一个where条件,条件太多影响效率越高

下图为该语法的示例及代码运行结果

10.内表当作后台表直接连表查询

与FOR ALL ENTRIES IN 相同,该语法也是可以将内表的每行数据当作where条件查询后台表数据,但与之不同的是没有非空和主键的限制。具体使用的要点是连接该内表时需要在前面加一个@符号,内表被当作后台表使用时需要用别名指代。具体代码及运行结果如下图。

同样内表也可以作为被连接字段用在被join的表中,代码示例如下,二者的差距在于主表是哪个,展示的数据有多少行

11.子查询语句作为条件查询

当select语句中的限制条件不明确,需要单独用一个sql查出数据时,可将该查询数据作为子查询语句代码示例如下

查询的物料必须扩展了工厂6A01,所有可以将该条件作为子查询

同样子查询可以使用所以的聚合函数如下图示例代码使用了sum函数

上图代码意思是查询采购订单,但是收货数量小于采购订单总数,即查询未收货完成的采购订单

12.字段类型转换CAST语句

    CAST语句一般与其他函数同时使用,当其他函数类型不满足时可以先使用CAST转换为需要的类型,如数字的拆分,行号的加减等,示例代码如下

13.CASE WHEN 分情况取值赋值

     该语句可以在sql中不同情况赋值不同数据,具体使用示例如下。

     CASE WHEN  表达式1  THEN 赋值1

                   WHEN 表达式2 THEN 赋值2

                   ELSE  赋值3   END   AS 字段别名

      示例代码及运行结果如下图

14. DISTINCT删除重复行

         加这个语句自动删除表中完全相同的行示例代码如下

附:部分sql代码示例

相关文章:

  • 化妆品怎么在百度百科上创建词条,品牌上百度百科的条件和操作
  • DOM--事件
  • 这12款idea插件,能让你代码飞起来
  • 基于springboot+vue的新生宿舍管理系统 elementui
  • spring 事务的传播行为
  • 再写一遍的网络流
  • Linux之 如何查看文件是`硬链接`还是`软链接`
  • Anaconda的安装与卸载
  • k8s 集群部署(二)
  • AMS笔记
  • SAP 电商云 Spartacus UI 的 Product Category Navigation UI 实现
  • 【Hive】各种join连接用法
  • 科研试剂mPEG-Lys(MAL)-DBCO,甲氧基聚乙二醇赖氨酸马来酰亚胺二苯并环辛炔
  • pytorch 优化器
  • Elasticsearch(016):es常见的字段映射类型之对象类型(object)
  • 《剑指offer》分解让复杂问题更简单
  • JavaScript 基础知识 - 入门篇(一)
  • JS笔记四:作用域、变量(函数)提升
  • Laravel Mix运行时关于es2015报错解决方案
  • maya建模与骨骼动画快速实现人工鱼
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • PHP 的 SAPI 是个什么东西
  • select2 取值 遍历 设置默认值
  • 好的网址,关于.net 4.0 ,vs 2010
  • 缓存与缓冲
  • 马上搞懂 GeoJSON
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 配置 PM2 实现代码自动发布
  • 深度学习在携程攻略社区的应用
  • 字符串匹配基础上
  • 大数据全解:定义、价值及挑战
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 如何正确理解,内页权重高于首页?
  • 说说我为什么看好Spring Cloud Alibaba
  • #include
  • $(selector).each()和$.each()的区别
  • (13)Hive调优——动态分区导致的小文件问题
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (十五)使用Nexus创建Maven私服
  • .NET delegate 委托 、 Event 事件
  • .Net Web项目创建比较不错的参考文章
  • .NET建议使用的大小写命名原则
  • .Net小白的大学四年,内含面经
  • .project文件
  • /boot 内存空间不够
  • /proc/stat文件详解(翻译)
  • :“Failed to access IIS metabase”解决方法
  • ?.的用法
  • @取消转义
  • [16/N]论得趣
  • [Android Pro] AndroidX重构和映射
  • [bzoj2957]楼房重建
  • [C++提高编程](三):STL初识