SAP HANA SQL

2020-08-31 11:21发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,

该如何合并两个内部表(it_tab_h1和it_tab_k1)的数据?

(7.2 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


专家,

该如何合并两个内部表(it_tab_h1和it_tab_k1)的数据?

(7.2 kB)
付费偷看设置
发送
2条回答
CJones
1楼-- · 2020-08-31 11:52

伊万,你好

基于CLIENT,FMSNO和DOCTY列,您可以连接这两个表。 联接可以基于表数据而保留或保留。

请参考下面的示例SQL:

开始
 it_tab_h =选择100个客户端,
 " a"为FMSNO,
 'AA'为DOCTY,
 'x1'为FMS_FCR,
 'y1'为DOCNO_1
 从假人
 全联盟
 选择100个客户,
 " a"为FMSNO,
 'AA'为DOCTY,
 " x2"作为FMS_FCR,
 " y2"为DOCNO_1
 从假人
 ;


 it_tab_h1 =选择
 客户,
 FMSNO,
 DOCTY,
 STRING_AGG(CASE WHEN(FMS_FCR!=``)THEN FMS_FCR ELSE NULL END,'/')AS FMS_FCR,
 STRING_AGG(CASE WHEN(DOCNO_1!='')THEN DOCNO_1 ELSE NULL END,'/')AS DOCNO_1
 来自:it_tab_h
 通过...分组
 客户,
 FMSNO,
 多蒂
 ;


 it_tab_k =选择100个客户端,
 " a"为FMSNO,
 'AA'为DOCTY,
 " m1"为MAWB,
 'n1'为MAWB_1,
 " o1"作为HAWB_1
 从假人
 全联盟
 选择100个客户,
 " a"为FMSNO,
 'AA'为DOCTY,
 " m2"为MAWB,
 'n2'为MAWB_1,
 " o2"作为HAWB_1
 从假人
 ;


 it_tab_k1 =选择
 客户,
 FMSNO,
 DOCTY,
 STRING_AGG(CASE WHEN(MAWB!=``)THEN MAWB ELSE NULL END,'/')AS MAWB,
 STRING_AGG(CASE WHEN(MAWB_1!=``)THEN MAWB_1 ELSE NULL END,'/')AS MAWB_1,
 STRING_AGG(CASE WHEN(HAWB_1!=``)THEN HAWB_1 ELSE NULL END,'/')AS HAWB_1
 来自:it_tab_k
 通过...分组
 客户,
 FMSNO,
 多蒂
 ;


 选择T1.CLIENT,
 T1.FMSNO,
 T1.DOCTY,
 T1.FMS_FCR,
 T1.DOCNO_1,
 T2.MAWB,
 T2.MAWB_1,
 T2.HAWB_1
 从
 :it_tab_h1 AS T1
 内部联接
 :it_tab_k1 AS T2
 在T1.CLIENT = T2.CLIENT和T1.FMSNO = T2.FMSNO和T1.DOCTY = T2.DOCTY
 ;
 END 

半个程序猿
2楼-- · 2020-08-31 11:46

HI Kedar,

最近我开始学习amdp,非常感谢您再次回答我的问题!

我希望使用sring_agg函数的结果不会重复。

例如:fms_fcr字段根据fmsno是重复的,类似docno_1 mawb mawb_1 hawb_1则根据fmsno不会重复。

it_tab_h = SELECT100ASCLIENT,

'a'as FMSNO,

" AA"为DOCTY,

" x1"为FMS_FCR,

" y1"为DOCNO_1

傻瓜

UNIONALL

SELECT100ASCLIENT,

'a'as FMSNO,

" AA"为DOCTY,

" x1"为FMS_FCR,

" y2"为DOCNO_1

傻瓜

;

预期结果是

以下是我的sql,但是it_warno无法内部加入it_cabno导致错误,请指导我如何纠正,

CLASS zcl_flights_demo_cds定义

公共

最终

创建公共。

公共部分。

接口if_amdp_marker_hdb。

类别方法:FOR TABLE FUNCTION ZDEMO_FLIGHTS_TABLE_FUNCTION的flights_connections。

受保护的部分。

专用部分。

ENDCLASS。

CLASS zcl_flights_demo_cds实施。

METHOD Flights_connections

通过数据库功能

对于HDB

语言SQLSCRIPT

只读选项

使用ZHX_FMST0059 ZHX_FMST0059I_BD。

it_warno =选择

将A.MANDT作为客户端,

A.FMSNO作为FMSNO,

B.warno AS warno从ZHX_FMST0059以A

A.DOCNO = B.DOCNO上的INNER JOIN ZHX_FMST0059I_BD AS B

WHERE DOCTY ='A';

it_cabno =选择

DISTINCT A.MANDT作为客户端,

A.FMSNO作为FMSNO,

B.cabno作为cabno,从ZHX_FMST0059作为A

A.DOCNO = B.DOCNO上的内部联接ZHX_FMST0059I_BD AS B

WHERE DOCTY ='A';

it_tab_h =选择

A.CLIENT,

A.FMSNO,

A.WARNO,

B.CABNO

FROM:it_warno AS A

左联接:it_cabno AS B ON A.FMSNO = B.FMSNO;

返回选择

客户,

fmsno,

STRING_AGG(CASE WHEN(warno!=``)THEN warno ELSE NULL END,'/')AS warno,

STRING_AGG(用小写,如果(CABNO!=``)THEN CABNO ELSE NULL END,'/')as CABNO

从:it_tab_h

按客户分组,fmsno;

终结法。

ENDCLASS。

一周热门 更多>