2020-09-21 09:16发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,专家们。
我有一个问题。 我需要从AMDP的本地表变量中删除重复项。
我找到了
从选项卡中删除,其中" $ rowid $"在中(从选项卡中的(按字段1,字段2进行分区)中选择SELECT引线($ rowid $));
但是对于本地表变量,它不起作用。
现在,这是一个很好的例子,说明了为什么应该尝试询问如何实现某些目标,而不是如何在总体解决方案中进行这一小步骤。
您的问题实际上是:为我提供每种物料,工厂和年份组合的最新月份记录。
有一个相当简单的方法。
第1步是简单的MAX()聚合。
第2步是通过INNER JOIN轻松进行过滤
选择s.matnr,s.werks,s.gjahr,s.monat,s.stock 库存 内部联接(选择matnr,werks,gjahr,max(monat)作为max_month 库存 按Matnr,Werks,Gjahr分组)ms 于(s.matnr,s.werks,s.gjahr,s.monat) =(ms.matnr,ms.werks,ms.gjahr,ms.max_month);
使用您的演示数据,结果如下:
MATNR WERKS GJAHR莫纳特股票 1000000000 1000 2017年05 0 1000000001 1000 2018 03 3
识别并使用SQLScript删除重复项,另一种方法可以将Row_Number()与Partition By子句一起使用。 可以在Row_Number()函数的Partition By子句中使用接受的用于定义重复大小写的列。
这是一个样本
et_data =从(选择kunnr,vbeln 从(lt_data)的rn,*中选择row_number()作为(按kunnr按vbeln排序) )其中rn = 1;
SQL以上返回客户的第一订单
如果您在Partition By子句中添加了更多列(此处仅使用kunnr),或者所有列都比行数据的完全重复。
表变量的删除是 仅从HANA 2开始可用。您使用HANA 2吗?
此外,从未支持使用内部列存储列$ rowid $-在没有键的情况下使用它来消除重复记录并不是最明智的主意。
您可以轻松地从表变量中选择DISTINCT。
tab_dupes = SELECT ... FROM all_my_dupes; tab_nodupes =选择区域*从:tab_dupes;
就是这样。 没有奇怪的内部列内容,没有对表变量的困难更新。
对于仅在列子集上有重复项的情况,例如 您可以将关键列用作标准选项,例如选择最大的值(如果"最大"是唯一的)或仅获取第一个/最后一个条目。 但这也就是所有标准SQL ...
谢谢, ERALPER YILMAZ
这是删除重复项的最佳方法。
谢谢,拉尔斯。
这可以解决我的问题。
最多设置5个标签!
现在,这是一个很好的例子,说明了为什么应该尝试询问如何实现某些目标,而不是如何在总体解决方案中进行这一小步骤。
您的问题实际上是:为我提供每种物料,工厂和年份组合的最新月份记录。
有一个相当简单的方法。
第1步是简单的MAX()聚合。
第2步是通过INNER JOIN轻松进行过滤
使用您的演示数据,结果如下:
识别并使用SQLScript删除重复项,另一种方法可以将Row_Number()与Partition By子句一起使用。 可以在Row_Number()函数的Partition By子句中使用接受的用于定义重复大小写的列。
这是一个样本
SQL以上返回客户的第一订单
如果您在Partition By子句中添加了更多列(此处仅使用kunnr),或者所有列都比行数据的完全重复。
表变量的删除是 仅从HANA 2开始可用。您使用HANA 2吗?
此外,从未支持使用内部列存储列$ rowid $-在没有键的情况下使用它来消除重复记录并不是最明智的主意。
您可以轻松地从表变量中选择DISTINCT。
就是这样。 没有奇怪的内部列内容,没有对表变量的困难更新。
对于仅在列子集上有重复项的情况,例如 您可以将关键列用作标准选项,例如选择最大的值(如果"最大"是唯一的)或仅获取第一个/最后一个条目。 但这也就是所有标准SQL ...
谢谢, ERALPER YILMAZ
这是删除重复项的最佳方法。
谢谢,拉尔斯。
这可以解决我的问题。
一周热门 更多>