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

 2024-01-28 00:05:21  阅读 0

语句的基本语法格式

从哪里进入

表示要搜索的表字段,用TABLE~FIELD表示。 当一张表中的FIELD被唯一确认时,可以省略TABLE规范。

代表从哪里获取数据

表示检索的数据必须满足什么条件

代表程序存放的地方

代码示例

上图中的代码意思是从SPFLI表中检索字段和字段。 限制条件大于,将检索到的数据存储在字段中。

如果你想检索所有数据,你可以

改成

,

如果您想添加其他限制,可以稍后添加其他条件。

链表

连接表的目的是同时从多个表中检索数据,并根据某些字段关联其他表。

内连接:完全连接。 两个表的连接字段必须一一对应,数据才能成功join。 连接失败的数据不会显示在结果表中。

左连接:左连接。 要连接的两个表的连接字段必须是一对一的,此数据才能成功连接。 连接表是主表。 join失败后,主表数据可以取出来,但是join后的表数据取不出来

右连接:右链接。 两个连接表的连接字段必须一一对应。 这样数据就可以成功连接到表了。 连接表是主表。 连接失败后,主表数据无法取出,但join表数据可以取出

以下面数据为例,展示表连接情况。 该采购订单有 14 个行项目,只有 12 个行已收货。 其中20、30号线尚未收到货。 具体数据如下图所示。

如果是全连接,则不会检索未收到的数据。 可以看到下图结果表中没有第20行和第30行。

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

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

聚合函数 MAX、MIN、AVG

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

聚合函数 COUNT

查找满足条件的数据条目的数量。 COUNT 后不要添加字段名称,并使用 * 表示条目数。 计数(*) + 分组依据。 分组具体代码及结果如下图所示。

聚合函数SUM

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

数字类型字段的运算符

支持的运算符有加法、减法和乘法。 没有分裂。 操作的对象可以是表中的数据(只能是数值类型),也可以是固定数字,而不是变量。 必须共用多种计算。 括号内。示例代码如下

CHAR类型字段拼接拆分操作

拼接和分割字段只能用于char类型字段。 使用 && 来拼接字段。 表中的常量和字段可以拼接,但SQL外部变量不能拼接。 拆分字段使用一个函数,该函数具有三个参数。 第一个参数是要拆分的字段,第二个参数是起始位置,包括位,第三个参数是要拆分多少位。示例代码和运行结果如下

其他数字运算符号

DIV(arg1, arg2) 四舍五入,两个数字必须是整数才能使用

MOD(arg1, arg2) 取余数。 所使用的两个数字必须是整数。

CEIL(arg) 不小于arg值的最小整数,向上舍入1。

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

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

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

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

该语法可以根据每一行内表参数准确匹配后台表数据,但使用时有几点需要注意。

使用前必须判断不为空,否则该语句相当于没有where条件限制,会取出表中的所有数据。 搜索的数据必须包含表的所有主键。 该方法带有去重功能,相同的数据会被删除。用于做条件的内表不宜太大。 内表中的每一行数据都代表语句的一个附加 where 条件。 条件过多会影响效率。

下图是语法示例和代码运行结果。

10、内表作为后端表,直接连接表进行查询

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

同样,内表也可以作为连接表中的连接字段。 代码示例如下。 两者的区别在于是哪个主表以及显示多少行数据。

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

当语句中的限制不明确,需要使用单独的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.删除重复行

添加此语句可自动删除表中相同的行。 示例代码如下

15. 要跨SQL检索表数据,您可以使用SQL中的其他方法,但要注意它们必须从同一服务器检索。


SELECT * FROM BKPF USING CLIENT '300' INTO TABLE @DATA(LT_TSTC) UP TO 10 ROWS.
  

附:一些sql代码示例

标签: 字段 示例 下图

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码