SAP Open Sql Select 常规的用法
- 作者: JKING专打法国牛虻
- 来源: 51数据库
- 2021-08-16
一、@tab, 在Select读取数据的同时,创建临时内表或者工作区
SELECT CARRID,CARRNAME
FROM scarr
INTO TABLE @DATA(result)
二、跨客户端取数 ,关键字‘CLIENT SPECIFIED’ 指定客户端
SELECT CARRID,CARRNAME
FROM scarr CLIENT SPECIFIED
INTO TABLE @DATA(result)
WHERE MANDT = '300'
.
cl_demo_output=>display( result ).
三、FOR ALL ENTRIS?
DATA city TYPE spfli-cityfrom VALUE 'FRANKFURT'.
cl_demo_input=>request( CHANGING field = city ).
SELECT carrid, connid
FROM spfli
WHERE cityfrom = @( to_upper( city ) )
INTO TABLE @DATA(entry_tab).
IF entry_tab IS NOT INITIAL.
SELECT carrid, connid, fldate
FROM sflight
FOR ALL ENTRIES IN @entry_tab
WHERE carrid = @entry_tab-carrid AND
connid = @entry_tab-connid
ORDER BY PRIMARY KEY
INTO TABLE @DATA(result_tab).
cl_demo_output=>display( result_tab ).
ENDIF.
四、WITH(subquery_clauses)
WITH
+flights AS ( SELECT FROM sflight
FIELDS carrid,
connid,
AVG( seatsocc AS DEC( 16,2 ) ) AS avg
WHERE carrid IN @carrids
GROUP BY carrid, connid
ORDER BY carrid, connid UP TO 1 ROWS )
##db_feature_mode[limit_in_subselect_or_cte]
SELECT FROM +flights AS f
INNER JOIN scarr AS s
ON f~carrid = s~carrid
FIELDS s~carrname, f~connid, f~avg
ORDER BY s~carrname, f~connid
INTO TABLE @DATA(itab).
cl_demo_output=>display( itab ).
"The example shows a WITH statement, whose main query creates a tabular result set. As "the data is written into work area wa rather than to an internal table, a SELECT loop is "opened, which must be closed with ENDWITH.
"当数据读进工作区而不是内表时,必须以ENDWITH结尾
WITH
+carriers AS ( SELECT FROM scarr
FIELDS carrid, carrname )
SELECT FROM spfli AS s
INNER JOIN +carriers AS c
ON s~carrid = c~carrid
FIELDS c~carrname, s~connid
WHERE s~carrid = 'UA'
INTO @DATA(wa)
UP TO 10 ROWS.
cl_demo_output=>write( wa ).
ENDWITH.
cl_demo_output=>display( ).
五、关键字(DISTINCT)去重?
TYPES:
BEGIN OF struct,
key1 TYPE c LENGTH 1,
key2 TYPE c LENGTH 1,
num1 TYPE i,
num2 TYPE i,
END OF struct.
DATA: itab TYPE STANDARD TABLE OF struct ,
istb type struct .
istb = VALUE #( key1 = 1 key2 = 2 num1 = 3 num2 = 4 ).
APPEND istb to itab .
CLEAR istb .
istb = VALUE #( key1 = 1 key2 = 2 num1 = 3 num2 = 4 ).
APPEND istb to itab .
CLEAR istb .
istb = VALUE #( key1 = 2 key2 = 2 num1 = 3 num2 = 4 ).
APPEND istb to itab .
CLEAR istb .
istb = VALUE #( key1 = 2 key2 = 2 num1 = 3 num2 = 4 ).
APPEND istb to itab .
CLEAR istb .
istb = VALUE #( key1 = 3 key2 = 2 num1 = 3 num2 = 4 ).
APPEND istb to itab .
CLEAR istb .
SELECT DISTINCT key1,
key2,
num1,
num2
FROM @itab AS itab
INTO TABLE @data(result) .
cl_demo_output=>display( result ).
?
推荐阅读
- SQLite数据库操作:原生操作,GreenDao操作讲解
- 数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
- SQLSERVER查询区分大小写的写法分析
- SQL学习总结之SQL的分类介绍
- 阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
- 高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
- 什么是SQL隔离级别?四个SQL隔离级别定义介绍
- Sql递归介绍之用with实现递归查询
- SQLSERVER查询时日期格式化的实例讲解
- 数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
热点文章
SQLite数据库操作:原生操作,GreenDao操作讲解
18
数据库SQL实战题:获取员工其当前的薪水比其manager当前薪水还高的相关信息(教程)
4
SQLSERVER查询区分大小写的写法分析
36
SQL学习总结之SQL的分类介绍
6
阶梯到高级T-SQL 1级:高级T-SQL介绍交叉连接
4
高级T-SQL级别1的Stairway:使用CROSS JOIN引入高级T-SQL分析
4
什么是SQL隔离级别?四个SQL隔离级别定义介绍
2
Sql递归介绍之用with实现递归查询
6
SQLSERVER查询时日期格式化的实例讲解
4
数据库SQL实战:从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略(题解)
7
