有效的总计表达式是:_MAX:返回列<a>的最大值
_MIN:返回列<a>的最小值
_AVG:返回列<a>的平均值
_SUM:返回列<a>的总计
_COUNT:按下列方式给值或行计数:
-COUNT(DISTINCT<a>)返回列<a>的不同值的个数。-COUNT(*)返回选定行的总数。
在括号和参数之间必须包含空格。算术操作符AVG和SUM只能对数字字段进行操作。
SELECT
子句中有一个列表时,可在INTO子句中将列表<F1>,<F2>,...用作参数:
SELECT
<a1><a2>....INTO(<F1>,<F2>,...).
2
指定将读取的数据库表在程序中指定数据库表名语法FROM<dbtab>[CLIENTSPECIFIED][BYPASSINGBUFFER][UPTO<n>ROWS] 数据库表或视图<dbtab>必须对
ABAP
/4词典有效,并且必须在
ABAP
/4程序中包含相应的TRABLES语句。
要关闭自动集团处理,请使用CLIENTSPECIFIED选项。BYPASSINGBUFFER选项使得不用读取SAP表缓冲区就可直接读取数据库在运行时指定数据库表的名称语法 .FROM(<dbtabname>)[CLIENTSPECIFIED][BYPASSINGBUFFER][UPTO<n>ROWS]..INTO<target>.....该格式的FROM子句只能与INTO子句一起使用
3
为选定数据指定目标区4.1将数据读到工作区中语法
SELECT
...INTO<wa>............必须为工作区<wa>声明一个至少与将读取的行一样大的数据对象。4.2将数据读到内表中语法
SELECT
.....INTOTABLE<itab>.在该情况下,
SELECT
并不启动循环,并且不允许使用ENDSELECT语句。如果内表<itab>不是空的,那么,
SELECT
语句将用读取的数据覆盖其中的内容。如果需要将所选行按已预定义大小的包的形式读到内表中语法
SELECT
*.....INTOTABLE<itab>PACKAGESIZE<n>.....该语句打开一个循环。必须使用ENDSELECT语句结束该循环。对于读取的每个包含<n>行的包,系统都将执行一次循环。如果<n>小于或等于零,将出现运行时间错误。为了避免覆盖内表中的内容,可将所选行附加到此表中。
SELECT
.....APPENDINGTABLE<itab>.....4.3逐个组件地读取数据语法对于将数据读到工作区中:
SELECT
...INTOCORRESPONDINGFIELDSOF<wa>........对于将数据读到内表中:
SELECT
...INTOCORRESPONDINGFIELDSOFTABLE<itab>........对于将数据附加到内表中:
SELECT
...APPENDINGCORRESPONDINGFIELDSOFTABLE<itab>........
4
选择即将读取的行5.1在程序中为行选择指定条件语法.....WHERE<condition>........ <f> NOT BETWEEN<g1>AND<g2><f> NOT LIKE<g>[ESCAPE<h>]该条件只能用于字符类型字段。_(下划线)表示单个字符%(百分号)表示任意字符串,包括空字符串<f> NOT IN(<g1>,......,<gn>)<f>IS[NOT]NULL<f> NOT IN<seltab>5.2运行时指定行选择的条件语法
SELECT
......WHERE(<itab>).......只能在仅包含一个类型为C且最大长度为72的字段的内表<itab>中指定条件。表名称必须在括号中指定,但在括号和名称之间没有空格。例外:_使用字母。不能使用变量。_不能将操作符IN与选择表一起使用。要在运行时指定
SELECT
语句中的条件的一部分语法
SELECT
......WHERE<condition>AND(<itab>).......要在运行时指定一系列条件来选择一定数目的特定行语法
SELECT
......FORALLENTRIESIN<itab>WHERE<condition>.....注意:数据库字段与内表中的关联比较字段必须具有相同的类型和长度。不要在数据库字段和表字段之间的比较中使用操作符LIKE、BETWEEN和IN。如果使用了WHERE子句的该变式,就不要使用ORDERBY子句。
5
给行分组将数据库表的一组行中的内容组合到单个行中语法
SELECT
[DISTINCT]<a1><a2>..FROMclauseINTOclauseGROUPBY<F1><F2>....语法
SELECT
[DISTINCT]<a1><a2>...FROMclauseINTOclauseGROUPBY(<itab>)如果内表<itab>包含有列表<F1><F2>...,那么该语句与上述语句的功能相同。因此,<itab>的行类型必须是C类型,并且最大长度为72的字段。
6
指定行的顺序7.1按主码排序语法
SELECT
*.....ORDERBYPRIMARYKEY.7.2按指定的字段排序语法..ORDERBY<F1>[ASCENDING|DESCENDING]<F2>[ASCENDING|DESCENDING]...语法..ORDERBY(<itab>)
1 定义选择的结果选择多行中的所有数据要从数据库表中读取所有列和多行,请按如下方式在循环中使用SELECT语句。语法SELECT[DISTINCT]*................ENDSELECT.DISTINCT选项将自动的去掉重复的行。 如果至少
FROMzsy_d_sd_log004
GROUPBYmatnr,vbeln,sernr)ANDsernr=lv_sernr "物料,交货单,唯一码 为主键 还可以and 加其他的筛选条件
INTOTABLE@DATA(lt_log4).
1、没筛选之前的
SEL...
DESCRIBE TABLEIT_TEMP LINES L_LINE1.
SORT IT_TEMP BYMATID.
DELETEADJACENT DUPLICATES FROM IT_TEMP COMPARING MATID.
DESCRIBE TABLEIT_TEMP LINES L_LINE2.
IF L_LINE1
MESSAGE 'Red
该存储库代表我的个人可重用
ABAP
代码库。 随意使用或贡献!
为了组织起见,文件位于干净的子文件夹中。
这里的许多类还表示示例实现。 这些文件都不包含任何公司特定的功能逻辑-因此没有“机密”被泄露。
其中一些文件需要以下
ABAP
库,可以通过轻松安装这些库:
select * from tb_producttype where protname in(
select protname from tb_producttype group by protname having count(*)>1
场景:userlist为
处理
后的数据内表,字段为(身份证、员工号、标识号),需求为筛选出身份证号出现次数大于1的数据展现。
首先
处理
数据,将userlist中符合要求的数据附加到userlistout中。
将
处理
后的数据输出为alv报表。
该方法是通过循环内部表自己累加
行
数。
2.DESCRIBE TABLE it_itab LINES g_lines1 .
获得内部表的属性,将内部表
行
数赋值给 g_lines1 , g_lines1 为I型变量。
3.g_lines3 = lines(it_itab ). 使用函数来计算内部表
行
...
SQL提供了多种类型的连接方式,它们之间的区别在于从相互交叠的不同数据集合中选择用于连接的
行
时所采用的方法不同,通过项目中的一下实践,整理一下连接类型的用法.
连接类型 定义
1. 内连接 | 只连接匹配的
行
2.左外连接 | 包含左边表的全部
行
(不管右边的表中是否存在与它们匹配的
行
),以及右边表中全部匹配的
行
3.右外连接 | 包含右
INNER JOIN 连接两个数据表的用法:
SELECT * FROM 表1 INNER JOIN 表2 ON 表1字段号=表2字段号
INNER JOIN 连接三个数据表的用法:
SELECT * FROM