ABAP: SQL 多值查询

这篇具有很好参考价值的文章主要介绍了ABAP: SQL 多值查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础查数据

问题举例:例如查物料类型为ZFRT、ZROH和ZRSA的物料编码。

1、直接查询,三种不同类型的物料类型是或的关系。

  SELECT DISTINCT ma~matnr  ma~mtart
   FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart EQ 'ZFRT' OR
        ma~mtart EQ 'ZROH' OR
        ma~mtart EQ 'ZRSA'.

2、如果对1进行优化,三种物料类型放在列表项中,使用关键字IN,这样查询等价于1.

  SELECT DISTINCT ma~matnr  ma~mtart
   FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart IN ( 'ZFRT' , 'ZROH', 'ZRSA' ).

3、定义区间函数,RANGE 内表

https://www.cnblogs.com/buduzhiren/p/13131483.html

SAP ABAP编程 Ranges用法_m15188153014的博客-CSDN博客

定义区间结构:

 TYPES: BEGIN OF ty_sign,
           sign   TYPE sign,
           option TYPE option,
           low    TYPE mtart,
           high   TYPE mtart,
         END OF ty_sign.           "定义区间结构


(1)直接赋值,不建议这种直接堆叠赋值方式,代码量比较多。


  DATA: lt_mtart TYPE TABLE OF ty_sign WITH HEADER LINE.  "定义区间表
  
  lt_mtart-sign = 'I'.    "赋值
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZFRT'.
  APPEND lt_mtart TO lt_mtart.
  lt_mtart-sign = 'I'.
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZROH'.
  APPEND lt_mtart TO lt_mtart.
  lt_mtart-sign = 'I'.
  lt_mtart-option = 'EQ'.
  lt_mtart-low = 'ZRSA'.
  APPEND lt_mtart TO lt_mtart.
  CLEAR lt_mtart.

(2) 优化:使用VALUE#() 进行赋值,建议这种方式,代码量会大大减少。

  DATA: lt_mtart TYPE TABLE OF ty_sign .

 lt_mtart = VALUE #( sign = 'I' option = 'EQ'  ( low = 'ZFRT' high = '' )
                                               ( low = 'ZROH' high = '' )
                                               ( low = 'ZRSA' high = '' )
                    ).

(3)或者用APPEND VALUE#() TO ITAB. 与(2)二者等同。

DATA: lt_mtart TYPE TABLE OF ty_sign . 

APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZFRT' high = '' ) TO lt_mtart.
APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZROH' high = '' ) TO lt_mtart.
APPEND  VALUE #( sign = 'I' option = 'EQ'  low = 'ZRSA' high = '' ) TO lt_mtart.

ABAP: SQL 多值查询,ABAP,mysql,数据库

对RANGE内表 赋值完成后的,以上三种方式的查询语句均相同。

  SELECT DISTINCT ma~matnr  ma~mtart
  FROM mara AS ma
  INNER JOIN mbewh AS mb
    ON ma~matnr = mb~matnr
  INTO CORRESPONDING FIELDS OF TABLE gt_tab
  WHERE ma~mtart IN lt_mtart.

总结: 1、如果是多个字符,使用第二种,IN +列表项,查询最为简洁;

2、如果有多个区间,可以使用VALUE#()方式进行赋值。文章来源地址https://www.toymoban.com/news/detail-640627.html

到了这里,关于ABAP: SQL 多值查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySQL】MySQL PHP 语法,PHP MySQL 简介,查询,下载 MySQL 数据库, SQL 教程

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP,在这些语言中,MySQL 在 PHP 的 web 开发中是应用最广泛。 我们

    2024年02月11日
    浏览(58)
  • MySQL数据库增删改查及聚合查询SQL语句学习汇总

    目录 数据库增删改查SQL语句 MySQL数据库指令 1.查询数据库 2.创建数据库 3.删除数据库 4.选择数据库 创建表table   查看所有表 创建表 查看指定表的结构 删除表 数据库命令进行注释 增删改查(CRUD)详细说明 增加 SQL库提供了关于时间的函数:now()  查询 查询表作列与列之间进

    2024年02月09日
    浏览(86)
  • SQL Server、MySQL和Oracle数据库分页查询的区别与联系

    摘要:本文将通过一个现实例子,详细解释SQL Server、MySQL和Oracle这三种常见关系型数据库在分页查询方面的区别与联系。我们将提供具体场景下的SQL语句示例,并解释每个数据库的分页查询用法以及优化方法,帮助读者更好地选择适合自己需求的分页查询方式。 假设我们有一

    2024年02月11日
    浏览(56)
  • Mysql-------SQL:DDL数据定义语言、DDM数据操作语言、DQL数据库查询语言、DQL数据控制语言

    SQL语言可以分为: DDL(Data Definition Language)语言:数据定义语言,用于 创建或更改数据库中的表、视图、索引等对象 DML(Data Manipulation Language)语言:数据操作语言,用来对 数据库表中的数据进行增删改查操作; DQL(Data Query Language)语言: 数据查询语言,用来查询数据库

    2024年02月13日
    浏览(75)
  • 关系数据库SQL数据查询

    1.查询仅涉及一个表,选择表中的若干列 查询全部列 选出所有属性列: 在SELECT后面列出所有列名 将目标列表达式指定为 * 查询经过计算的值 SELECT子句的目标列表达式不仅可以为表中的属性列,也可以是表达式 使用列别名改变查询结果的列标题: 2.选择表中的若干元组

    2024年02月09日
    浏览(55)
  • 数据库作业-sql语句查询

    建表的插入数据的表 数据库作业-sql建表和插入数据_快乐的xiao何的博客-CSDN博客 create table supplier( supplierno char(6) primary key, suppliername nvarchar(10), address nvarchar(20), number char(11) )create table category( categoryno char(5) primary key, categoryname varchar(20), descriptions text... https://blog.csdn.net/m0_539670

    2023年04月23日
    浏览(57)
  • 数据库SQL查询相关练习

    1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。 8、列出所有姓刘的职工

    2024年01月25日
    浏览(49)
  • 【数据库】日常使用PL/SQL 登录ORACLE 数据库查询数据

    一、PL/SQL 登录方式 username: ##访问数据库的账号 password: ##访问数据库的密码 Databse: ##数据库IP地址/实例名 数据库集群心跳地址/实例名 Connect as : ##Normal,如果使用sysdba账户登录选择SYSDBA 二、PL/SQL使用SQL语句查询 点击上方导航栏,New,选择SQL Window,即可再次输入要查询的

    2024年02月19日
    浏览(70)
  • 数据库 SQL高级查询语句:聚合查询,多表查询,连接查询

    创建Students和Courses表 直接查询 设置别名查询 设置条件查询 使用COUNT(*) 和 COUNT(StudentID)是一样的效果,因为StudentID是主键,每行记录的主键都不同。另外我们在聚合查询中还是能使用WHERE子句的,比如我们要 查找年龄大于20岁的学生数量 ,可使用以下SQL语句: 函数 说明 SUM

    2024年02月09日
    浏览(127)
  • 《数据库原理》实验六 SQL数据查询实验

    本系列传送门: 实验二 SQL Server SSMS工具创建和管理数据库及数据表 实验三 SQL Server SSMS工具添加数据 实验四 SQL的数据定义语句 实验五 数据库完整性约束的实现与验证 实验六 SQL数据查询实验 实验六(2) SQL数据查询—连接查询 实验七 SQL的数据更新和视图 实验八 T_SQL编程

    2024年02月03日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包