AMDP-子选择错误:单行子查询返回多个行

2020-08-13 19:14发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)早上好:) 我想进行子选择,但...

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

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


早上好:)

我想进行子选择,但是我总是收到此错误:单"行子查询返回多个行"

 test =选择
                           ta.rclnt
                           ta.szenario,
                           ta.fiscalyear,/*会计年度*/
                           ta.version,/*版本*/
                           ta.period,/*期限*/
                           ta.rcomp,/*公司代码*/
                           ta.RBUKRS,/* Buchungskreis */
                           ta.DRCRK,
                           fagl.ERGSL LIKE_REGEXPR'[A-Z]'THEN的情况
                                             (从FAGL_011PC中选择参数ERGSL作为参数,其中参数ID在(
                                                 (从FAGL_011PC中选择不同的chi.parent作为chi,其中chi.ERGSL = fagl.ERGSL和chi.VERSN ='IAT')))ELSE fagl.ERGSL END作为GAccount,/*交易类型*/


                           fagl.ERGSL,
                           fagl.XSOLL,
                           fagl.XHABN,/*组帐户*/
                           ta.ktoks,
                           ta.rmvct,
                           ta.SAKNR,/*总帐科目*/
                           ta.rassc,/*交易伙伴*/
                           ta.fid_maturity,/*到期时间*/
                           ta.hsl,
                           ta.FID_TRAN_TYPE
                     来自:tagetik_response_PRCTR as ta
                     在fagl.VERSN ='IAT'和fagl.VONKT = ta.SAKNR上作为fagl内部加入FAGL_011ZC;
 

此选择返回错误:

从FAGL_011PC中选择不同的chi.parent作为chi,其中chi.ERGSL = fagl.ERGSL和chi.VERSN ='IAT'

但是,如果我将值" fagl.ERGSL"硬编码,它将起作用

从FAGL_011PC中选择不同的chi.parent作为chi,其中chi.ERGSL ='PX23113AAA'和chi.VERSN ='IAT'


这是一个错误吗?
通常可以正常工作。


致谢

艾德里安

2条回答
奄奄一息的小鱼
2020-08-13 19:31

这不是错误。 如错误消息所述,您的子查询返回多个值,该值是window函数所不允许的。 即使您固定了PX23113AAA的值并且可以工作,也并不意味着对于其他值您将始终仅获得1条记录。

ERGSL列中可能还有其他一些值导致此查询:

从FAGL_011PC中选择参数ERGSL作为参数

返回多个值。 为了确保始终返回1条记录,您可以在子查询中添加LIMIT 1子句:

从FAGL_011PC中选择参数ERGSL作为参数,其中par.ID in((从FAGL_011PC中选择不同的chi.parent作为chi 其中chi.ERGSL = fagl.ERGSL和chi.VERSN ='IAT'))LIMIT 1 

但是如果结果为ERGSL列返回了多个值,这可能会给您带来错误的情况 会随机选择第一个)

最好只将子查询加入当前语句,而不是使用子查询。

一周热门 更多>