Abap 具有的SQL查询存在,并且子查询中有多个字段

Abap 具有的SQL查询存在,并且子查询中有多个字段,abap,Abap,我有一个疑问: SELECT * FROM j_1gvl_ml AS jml WHERE sptag IN @s_sptag AND bukrs = @p_bukrs AND werks IN @s_werks AND matnr IN @s_matnr AND tract IN @s_tract AND erdat IN @s_erdat AND repid = @p_repid AND EXISTS ( SE

我有一个疑问:

SELECT *
FROM j_1gvl_ml AS jml
WHERE sptag IN @s_sptag AND
      bukrs = @p_bukrs AND
      werks IN @s_werks AND
      matnr IN @s_matnr AND
      tract IN @s_tract AND
      erdat IN @s_erdat AND
      repid = @p_repid AND
      EXISTS ( SELECT vrsio,whbcode,bukrs,belnr,buzei,
                      werks,locat,matnr,bwtar,orgn, COUNT( * )
                FROM j_1gvl_ml
                WHERE vrsio = jml~vrsio AND
                      sptag = jml~sptag AND
                      whbcode = jml~whbcode AND
                      bukrs = jml~bukrs AND
                      belnr = jml~belnr AND
                      buzei = jml~buzei AND
                      werks = jml~werks AND
                      locat = jml~locat AND
                      matnr = jml~matnr AND
                      bwtar = jml~bwtar AND
                      orgn = jml~orgn
                GROUP BY vrsio,whbcode,bukrs,belnr,buzei,
                      werks,locat,matnr,bwtar,orgn
                HAVING COUNT( * ) > 1  )
  INTO TABLE @itj_1gvl_ml.
有一个错误,子查询中不能有超过1个字段

我知道我可以对所有条目进行2次查询。但我正在寻找是否有可能,在1个查询中只有双,三等记录


这可能吗?

存在一个
子查询,用于限定要选择的行。它不会向结果集中添加行或列

将子查询的
SELECT
子句中的列列表减少为任何一列,甚至是一个文本(例如
SELECT 1
),您将获得重复的:

SELECT *
  FROM j_1gvl_ml AS jml
  WHERE sptag IN @s_sptag AND
        bukrs = @p_bukrs AND
        werks IN @s_werks AND
        matnr IN @s_matnr AND
        tract IN @s_tract AND
        erdat IN @s_erdat AND
        repid = @p_repid AND
        EXISTS ( SELECT belnr
                  FROM j_1gvl_ml
                  WHERE vrsio = jml~vrsio AND
                        sptag = jml~sptag AND
                        whbcode = jml~whbcode AND
                        bukrs = jml~bukrs AND
                        belnr = jml~belnr AND
                        buzei = jml~buzei AND
                        werks = jml~werks AND
                        locat = jml~locat AND
                        matnr = jml~matnr AND
                        bwtar = jml~bwtar AND
                        orgn = jml~orgn
                  GROUP BY vrsio,whbcode,bukrs,belnr,buzei,
                        werks,locat,matnr,bwtar,orgn
                  HAVING COUNT( * ) > 1  )
    INTO TABLE @itj_1gvl_ml.

存在一个
子查询
来限定要选择的行。它不会向结果集中添加行或列

将子查询的
SELECT
子句中的列列表减少为任何一列,甚至是一个文本(例如
SELECT 1
),您将获得重复的:

SELECT *
  FROM j_1gvl_ml AS jml
  WHERE sptag IN @s_sptag AND
        bukrs = @p_bukrs AND
        werks IN @s_werks AND
        matnr IN @s_matnr AND
        tract IN @s_tract AND
        erdat IN @s_erdat AND
        repid = @p_repid AND
        EXISTS ( SELECT belnr
                  FROM j_1gvl_ml
                  WHERE vrsio = jml~vrsio AND
                        sptag = jml~sptag AND
                        whbcode = jml~whbcode AND
                        bukrs = jml~bukrs AND
                        belnr = jml~belnr AND
                        buzei = jml~buzei AND
                        werks = jml~werks AND
                        locat = jml~locat AND
                        matnr = jml~matnr AND
                        bwtar = jml~bwtar AND
                        orgn = jml~orgn
                  GROUP BY vrsio,whbcode,bukrs,belnr,buzei,
                        werks,locat,matnr,bwtar,orgn
                  HAVING COUNT( * ) > 1  )
    INTO TABLE @itj_1gvl_ml.

不清楚你在问什么。为什么在这里提及所有条目?它与子查询无关此子查询查询不起作用。它有一个错误,即“子查询的SELECT子句只能包含一列。”。还有另外一个解决方案,它有两个单独的查询。首先查找双记录,然后使用FAE显示另一个记录的所有字段。我希望现在我的意思清楚了。你用什么ABAP版本?(我正在考虑使用7.51中的
)ABAP版本7。50@ekekakos如果使用EXISTS,为什么要在子查询中指定列?子查询可能返回数据或不返回数据(结果存在或不存在),这里的字段没有意义。这就是为什么sap不允许您将与字段列表无关的事情复杂化。不清楚您在问什么。为什么在这里提及所有条目?它与子查询无关此子查询查询不起作用。它有一个错误,即“子查询的SELECT子句只能包含一列。”。还有另外一个解决方案,它有两个单独的查询。首先查找双记录,然后使用FAE显示另一个记录的所有字段。我希望现在我的意思清楚了。你用什么ABAP版本?(我正在考虑使用7.51中的
)ABAP版本7。50@ekekakos如果使用EXISTS,为什么要在子查询中指定列?子查询可能返回数据或不返回数据(结果存在或不存在),这里的字段没有意义。这就是为什么sap不让您将与字段列表无关的事情复杂化。谢谢Florian,我不知道这一点,但我现在明白了。谢谢Florian,我不知道这一点,但我现在明白了。