码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SAP-ABAP-SELECT语法SQL语法详解


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

    SELECT   FROM

      WHERE  INTO 

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

    代表从哪个取数据

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

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

       代码示例

       上图代码的意思是从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后面不加字段名称用*表示条目数, COUNT( * ) AS 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删除重复行

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

    15.SQL跨client取表数据,在SQL里面用USING CLIENT 其他client即可,但是要注意,两个client是同一个服务器才能取到

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

    附:部分sql代码示例

  • 相关阅读:
    R语言缺失时间序列的填充及合并:补齐时间序列数据中所有缺失的时间索引、使用merge函数合并日期补齐之后的时间序列数据和另外一个时间序列数据(补齐右侧数据)
    Hadoop 生产调优 (一) --------- HDFS 核心参数
    ARM 相关概念1
    开源组件搭建完整的Kubernetes-Devops平台方案
    __builtin_return_address()函数的使用方法
    mybatis的一级缓存和二级缓存
    linux常用命令之设定acl相关命令 setfacl/getfacl/chattr
    710. 黑名单中的随机数
    4. ArrayList
    Java-访问修饰符
  • 原文地址:https://blog.csdn.net/Qunending/article/details/126656678
    • 最新文章
    • 攻防演习之三天拿下官网站群
      数据安全治理学习——前期安全规划和安全管理体系建设
      企业安全 | 企业内一次钓鱼演练准备过程
      内网渗透测试 | Kerberos协议及其部分攻击手法
      0day的产生 | 不懂代码的"代码审计"
      安装scrcpy-client模块av模块异常,环境问题解决方案
      leetcode hot100【LeetCode 279. 完全平方数】java实现
      OpenWrt下安装Mosquitto
      AnatoMask论文汇总
      【AI日记】24.11.01 LangChain、openai api和github copilot
    • 热门文章
    • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
      奉劝各位学弟学妹们,该打造你的技术影响力了!
      五年了,我在 CSDN 的两个一百万。
      Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
      面试官都震惊,你这网络基础可以啊!
      你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
      心情不好的时候,用 Python 画棵樱花树送给自己吧
      通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
      13 万字 C 语言从入门到精通保姆级教程2021 年版
      10行代码集2000张美女图,Python爬虫120例,再上征途
    Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
    正则表达式工具 cron表达式工具 密码生成工具

    京公网安备 11010502049817号