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').