2016-12-27 96 views
3

在我的select语句中,我用AND链接不同的条件。现在我需要一个条件或。 如何在不影响其他AND语句之前将此属性添加到这一个属性中? 这是我的编码:And + Or in Or Select Select-Statement

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio WHERE pdatv GE pa_begda AND pdatb LE pa_endda AND abrec EQ '2'.

对于最后一个条件abrec EQ '2'我需要一个OR,以及像abrec EQ '2' OR '3'。 如何在不影响其他AND的情况下添加此最佳方式?

感谢您的提示!

+3

括号? 'A和B以及C和(d或e)' –

+0

SELECT PERNR reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO INTO TABLE OF相应字段lt_ptrv_perio WHERE pdatv> = pa_begda AND pdatb <= pa_endda AND(abrec = '2' OR abrec ='3') – edt

+0

嘿,伙计们,谢谢你的快速回复。我错过了说我正在ABAP工作,对此抱歉。现在看起来它不像ABAP那样工作。我仍然得到它的错误。 – Dyrdek

回答

3

使用括号:

编辑:好像你需要后括号前添加空格 看到这个相关question

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO 
INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio 
WHERE pdatv GE pa_begda 
AND pdatb LE pa_endda 
AND (abrec EQ '2' OR abrec EQ '3') 
+0

嗨,伙计们,感谢您的快速回复。我错过了说我正在ABAP工作,对此抱歉。现在看起来它不像ABAP那样工作。我仍然得到它的错误。 – Dyrdek

+1

这是ABAP中的不正确形式。 – Suncatcher

+1

@Suncatcher我发现了一个相关的问题。检查更新的答案。 – pixelarbeit

3

使用IN clause代替:

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO 
INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio 
WHERE pdatv GE pa_begda 
AND pdatb LE pa_endda 
AND abrec IN ('2', '3'). 

的其他有效替代方案是:

SELECT pernr reinr pdatv pdatb pdvrs abrec FROM PTRV_PERIO 
INTO CORRESPONDING FIELDS OF TABLE lt_ptrv_perio 
WHERE pdatv GE pa_begda 
AND pdatb LE pa_endda 
AND (abrec EQ '2' OR abrec EQ '3').