点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们在ABAP代码中有一个开放的SQL语句,如下所示。
类型: ty_vbak的开始。 包括类型vbak。 类型:asttx TYPE asttx, asttx_t TYPE j_txt30, 结束于ty_vbak。 数据:带有唯一键vbeln的ty_vbak的lt_temp_vbeln类型哈希表 SELECT head〜vbeln 表lt_temp_vbeln的对应字段 ........
现在在SQL Server上执行此代码时,在ST12中,我们可以看到DISTINCT子句已添加到查询中,如下所示
SELECT DISTINCT" HEAD"。" VBELN" FROM(" VBAK" ....)
所以我的问题是,如何将DISTINCT子句添加到查询中?
嗨,
可能是因为目标内部表是散列的。 也许您的SELECT语句的其余部分将导致重复的条目,并且OpenSQL通过将其修复并避免出现短暂的转储场景而成为一个好人。 还是仅仅是针对目标哈希表的通用OpenSQL转换。
问题的附录-完整代码摘自OP注释:
请完成您的问题:您是说您不知道什么? 但为什么? 如果您的意思是要使用重复的值(?),而不是使用HEAD〜VBELN的不同值,那是没有意义的! 还是只想计数? 如果是这样,请使用GROUP BY和HEAD〜VBELN,COUNT(*)...请解释。
你好 Amardeep Verma
您尚未显示整个SQL语句。 您是否有所有条目?
所有条目 与DISTINCT的作用相同,尽管有时重复项会直接在数据库中(有时在应用程序服务器中)直接删除。
亲切的问候,
Mateusz
从提到的SAP帮助文档中摘录:对于在结果集中出现多次的行,对于所有条目的加法与在选择集的定义中指定加法DISTINCT时具有相同的效果。 与DISTINCT不同,行并不总是从数据库系统中删除,而是有时首先从应用程序服务器上的结果集中删除。 如果可以将SELECT语句作为单个SQL语句传递到数据库系统,则从数据库系统中删除重复的行。 此处支持添加DISTINCT。 如果SELECT语句需要在传递之前分配给多个SQL语句,或者在SELECT列表中指定了STRING和RAWSTRING加上LCHR和LRAW类型的列,则这些行将在应用程序服务器上聚合。
我想要DISTINCT。 我们注意到在开发环境中DISTINCT关键字会自动添加。 我们根本没有添加DISTINCT子句。 我们表现良好。 在同一SQL代码的QA环境中,不会自动添加DISTINCT关键字。 而且我们的性能很差。
我不希望重复值。 我想要独特的价值。 从查询的输出中,我们正在获取其他详细信息。 我们也做一个计数。
我要去的地方是,如果我理解为什么在我们未为其编码时会自动添加DISTINCT子句,那将会很有帮助。
希望这会有所帮助。
我如何检查DISTINCT子句何时通过openSQL Conversion添加?
不是因为数据库语句未使用DISTINCT,ABAP内核(dbsl部分,即"数据库共享库")并未删除重复项。 此外,正如Mateusz所说,您必须确保FAE表(lt_rg_vbeln)不为空,否则将返回表的所有行。
一周热门 更多>