ABAP之SELECT语句

SELECT

 SELECT语句从数据库表中读取必要的数据。

 SELECT语句分为两个部分。一部分为<lines>,用于指定查询数据的件数,当查询一件时用SINGLE语句。另一部分是<columns>,用于指定要查询的数据库表字段。

AS(别名)

 利用AS语句可以给字段指定别名。

 SELECT <cols> [AS <alias>]    

例:

SELECT SINGLE
  CARRID AS ZCARRID
  INTO GV_CARRID FROM SFLIGHT WHERE  CONNID = '123'.

Single field

 查询数据库的个别字段或者使用Aggregate(聚合函数)时使用如下所示的语句。INTO 语句后面列出现两个以上的目标时需要括号分别指定变量名。

 若存在空格,则会发生语法错误。

SELECT CARRID CONNID INTO (GV_CARRID,GV_CONNID) FROM SFLIGHT.

限制查询个数

 利用下列语句可以限制要查询的数据个数。

   SELECT ..FROM <TAB> UP TO <N> ROWS...

WHERE 语句

  WHERE语句可以指定查询条件使用户正确的取得自己所需数据,此语句还适用与UPDATE、DELETE等命令。

  SELECT ..WHERE <s> <operator> <f> ...

1.interval条件

  需要在条件中追加范围时使用此语

  SELECT ..WHERE <S> [NOT] BETWEEN <F1> AND <F2>  

  例如,取得字段COL为1~10的数据时可以写成 WHERE COL BETWEEN AND 10.     

2.字符串比较

 比较字符串时使用LIKE语句。若要取得以ABC开头的数据,则可以追加如以下条件。

 COLS 'ABCDEFGH'.
 SELECT WHERE COL2 LIKE 'ABC%'.

 若要取得ABC开头的四位长字符串时,例如,在ABCD、ABCE、AFCF、ABCG等数据中

 只要比较一位时,可以使用符号‘_’.

    WHERE COL2 LIKE 'ABC '

3.LIST VALUE

 利用IN语句可以取得符合多种情况的数据。例如,读取居住在'北京'、'上海'的人时条件

 可以为“WHERE 地址 IN ('北京','上海')”。

  SELECT ..WHERE <S> [NOT] IN (<F1>,...,<FN>)...

4.SELECTION TABLE

 利用IN语句可以查询存储在Selection Table,Range变量里的数据。Selection Table,Range变量

 类似于内表,可以存储多条数据。

  SELECT ..WHERE <S> [NOT] IN <SELTAB>

GROUPING 语句

 使用Aggregate(聚合函数)函数之前,选择数据时需要用Group bY 语句进行分组。group by语句是当表的特定关键字中存在相同值时就显示在同一行中

 SELECT <F1> <F2> <AGG> ..GROUP BY <F1> <F2>

 GROUP BY 语句使用的字段一定要在SELECT语句中查询出来。

   

 例子:分别取得每个航班ID的评价占有率。

DATA GV_CARRID TYPE SFLIGHT-CARRID.
DATA GV_CONNID TYPE SFLIGHT-CONNID.
DATA GV_PAYMENTSUM TYPE SFLIGHT-PAYMENTSUM.


SELECT CARRID CONNID AVG( PAYMENTSUM )
INTO ( GV_CARRID,GV_CONNID,GV_PAYMENTSUM )
FROM SFLIGHT GROUP BY CARRID CONNID PAYMENTSUM.
  WRITE:/ GV_CARRID,GV_CONNID.
ENDSELECT.

   结果:

 

 在OPEN SQL 中利用SUM 函数时 使用INTO CORRESPONDING FIELDS OF TABLE 语句会取不到预期结果。

 此时要利用AS语句为合计字段起个别名,具体使用方法如下面代码所示。

SELECT CARRID 
  SUM( PRICE ) AS PRICE
  FROM SFLIGHT
  INTO CORRESPONDING FIELDS OF TABLE GT_GLT
  WHERE CARRID = 'AA'.

  

猜你喜欢

转载自www.cnblogs.com/aqsyc/p/10764512.html