В приведенном ниже коде я пытаюсь ограничить результаты либо wkf.email_address запрашивающей стороны, либо wkf.email_address покупателя
Однако я получаю BUYER_EMAIL, не действительный идентификатор.
довольно плохо знаком с SQL, так что я уверен, что это неправильный синтаксис.
Работает только по электронной почте запрашивающей стороны, т.е.
AND WKF.EMAIL_ADDRESS = :xdo_user_name
вместо
AND WKF.EMAIL_ADDRESS = :xdo_user_name OR BUYER_EMAIL = :xdo_user_name
Это мой код
SELECT DISTINCT APA.INVOICE_NUM,
APA.INVOICE_AMOUNT,
TO_CHAR (APA.INVOICE_DATE, 'DD/MM/YYYY') INVOICE_DATE,
SUP.VENDOR_NAME,
SSV.VENDOR_SITE_CODE,
POH.DOCUMENT_NUM PO_NUMBER,
POH.COMMENTS,
WKF.EMAIL_ADDRESS AS REQUESTOR_EMAIL,
WKF.FULL_NAME AS REQUESTOR_NAME,
(SELECT WKF.EMAIL_ADDRESS
FROM PER_WORKFORCE_X WKF, PO_HEADERS_INTERFACE POH
WHERE POH.PO_HEADER_ID = PLO.PO_HEADER_ID
AND POH.AGENT_NAME = WKF.FULL_NAME)
AS BUYER_EMAIL
--
FROM AP_INVOICE_LINES_ALL AIL,
AP_INVOICES_ALL APA,
POZ_SUPPLIERS_V SUP,
POZ_SUPPLIER_SITES_V SSV --
,
PO_HEADERS_INTERFACE POH,
PO_LINES_ALL PLO,
PO_LINE_LOCATIONS_ALL PLL,
PO_DISTRIBUTIONS_ALL PDA --
,
AP_HOLDS_ALL HOLDS,
PER_WORKFORCE_X WKF
WHERE APA.INVOICE_ID = AIL.INVOICE_ID
AND SUP.VENDOR_ID = SSV.VENDOR_ID
AND APA.VENDOR_SITE_ID = SSV.VENDOR_SITE_ID
AND POH.PO_HEADER_ID = PLO.PO_HEADER_ID
AND PLO.PO_LINE_ID = PLL.PO_LINE_ID
AND PLL.LINE_LOCATION_ID = PDA.LINE_LOCATION_ID
AND PDA.DELIVER_TO_PERSON_ID = WKF.PERSON_ID
--
AND APA.INVOICE_ID = HOLDS.INVOICE_ID
AND PLL.LINE_LOCATION_ID = HOLDS.LINE_LOCATION_ID(+)
AND PDA.DELIVER_TO_PERSON_ID = WKF.PERSON_ID
--
AND PDA.PO_DISTRIBUTION_ID = AIL.PO_DISTRIBUTION_ID
AND POH.DOCUMENT_NUM NOT LIKE ('CP%')
AND SSV.VENDOR_SITE_CODE LIKE ('%B')
AND WKF.EMAIL_ADDRESS = :xdo_user_name
OR BUYER_EMAIL = :xdo_user_name
ORDER BY WKF.FULL_NAME, POH.DOCUMENT_NUM, APA.INVOICE_NUM
Ожидаемый результат состоит в том, что он либо показывает запрашивающей стороне свои собственные PO, либо показывает Покупателю все те, где он является Покупателем (несколько запрашивающих)