2017-06-12 130 views
0

我設計了下面的查詢來從我們的Oracle系統中提取一些數據。查詢工作正常,並提取正確的信息。問題在於應該返回購買訂單(PO_TOTAL_VALUE字段)的總價值的列。這應該返回構成採購訂單的三個行項目的總和。相反,它會返回一些與訂單的三個訂單項無關的未知總數。我也在Access的設計視圖中發佈了一些查詢的截圖。有誰能告訴我我做錯了什麼?訪問查詢返回錯誤總計

SELECT APPS_PO_HEADERS_ALL.PO_HEADER_ID, APPS_PO_HEADERS_ALL.SEGMENT1, APPS_PO_REQUISITION_LINES_ALL.ATTRIBUTE1, IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="","-",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="APW","AGREEMENT FOR PERFORMANCE OF WORK",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="APWEMER","AGREEMENT FOR PERFORMANCE OF WORK - EMERGENCY",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="CONS","CONSULTANT",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="CONCEMER","CONSULTANT - EMERGENCY",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="DFC","DIRECT FINANCIAL CONTRIBUTION",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="FELLOW","FELLOWSHIP",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="GENEXT","GENERAL EXTERNAL SERVICES",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="IMPRESTCC","IMPREST/CREDIT CARD",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="IS","INTERNAL SERVICES",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="LOA","LETTER OF AGREEMENT",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="TSA","TECHNICAL SERVICE AGREEMENT")))))))))))) AS [DOCUMENT TYPE (SERVICES)], IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="","-",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="UN","Procurement for UN/NGO",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="SP","Standard Procurement",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="RP","Reimbursable Procurement",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="EMER","EMERGENCY"))))) AS [DOCUMENT TYPE (GOODS)], HR_HR_ALL_ORGANIZATION_UNITS.NAME, APPS_PO_HEADERS_ALL.CREATION_DATE, APPS_PO_HEADERS_ALL.AUTHORIZATION_STATUS, APPS_PO_HEADERS_ALL.APPROVED_DATE, APPS_PO_HEADERS_ALL.COMMENTS, APPS_PO_HEADERS_ALL.CLOSED_DATE, APPS_PO_HEADERS_ALL.CLOSED_CODE, AP_AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_ID, AP_AP_INVOICES_ALL.INVOICE_TYPE_LOOKUP_CODE, APPS_PO_VENDORS.VENDOR_NAME, APPS_PO_HEADERS_ALL.VENDOR_ID, AP_AP_INVOICES_ALL.INVOICE_DATE, AP_AP_INVOICES_ALL.INVOICE_NUM, AP_AP_INVOICES_ALL.INVOICE_AMOUNT, AP_AP_INVOICES_ALL.INVOICE_CURRENCY_CODE, AP_AP_INVOICES_ALL.GL_DATE, AP_AP_INVOICES_ALL.PAYMENT_CURRENCY_CODE, AP_AP_INVOICES_ALL.PAYMENT_CROSS_RATE, AP_AP_INVOICES_ALL.DESCRIPTION, AP_AP_INVOICES_ALL.EXCHANGE_RATE, AP_AP_INVOICES_ALL.BASE_AMOUNT, Sum(IIf(Nz([APPS_PO_LINES_ALL]![QUANTITY],0)*Nz([APPS_PO_LINES_ALL]![UNIT_PRICE],0)*Nz([APPS_PO_DISTRIBUTIONS_ALL]![RATE],1)=0,Nz([APPS_PO_LINES_ALL]![AMOUNT],0)*Nz([APPS_PO_DISTRIBUTIONS_ALL]![RATE],1),Nz([APPS_PO_LINES_ALL]![QUANTITY],0)*Nz([APPS_PO_LINES_ALL]![UNIT_PRICE],0)*Nz([APPS_PO_DISTRIBUTIONS_ALL]![RATE],1))) AS PO_TOTAL_VALUE, APPS_PO_LINES_ALL.QUANTITY, APPS_PO_LINES_ALL.UNIT_PRICE, APPS_PO_LINES_ALL.AMOUNT, APPS_PO_DISTRIBUTIONS_ALL.Rate 
FROM (((((((((((APPS_PO_HEADERS_ALL LEFT JOIN APPS_PO_DISTRIBUTIONS_ALL ON APPS_PO_HEADERS_ALL.PO_HEADER_ID = APPS_PO_DISTRIBUTIONS_ALL.PO_HEADER_ID) LEFT JOIN APPS_PO_REQ_DISTRIBUTIONS_ALL ON APPS_PO_DISTRIBUTIONS_ALL.REQ_DISTRIBUTION_ID = APPS_PO_REQ_DISTRIBUTIONS_ALL.DISTRIBUTION_ID) LEFT JOIN APPS_PO_REQUISITION_LINES_ALL ON APPS_PO_REQ_DISTRIBUTIONS_ALL.REQUISITION_LINE_ID = APPS_PO_REQUISITION_LINES_ALL.REQUISITION_LINE_ID) LEFT JOIN APPS_PA_PROJECTS_ALL ON APPS_PO_DISTRIBUTIONS_ALL.PROJECT_ID = APPS_PA_PROJECTS_ALL.PROJECT_ID) LEFT JOIN AP_AP_INVOICE_DISTRIBUTIONS_ALL ON APPS_PO_DISTRIBUTIONS_ALL.PO_DISTRIBUTION_ID = AP_AP_INVOICE_DISTRIBUTIONS_ALL.PO_DISTRIBUTION_ID) LEFT JOIN AP_AP_INVOICES_ALL ON AP_AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_ID = AP_AP_INVOICES_ALL.INVOICE_ID) LEFT JOIN HR_HR_ALL_ORGANIZATION_UNITS ON APPS_PA_PROJECTS_ALL.CARRYING_OUT_ORGANIZATION_ID = HR_HR_ALL_ORGANIZATION_UNITS.ORGANIZATION_ID) LEFT JOIN APPS_XXWRP_SERVICE_REG_ALL ON APPS_PO_HEADERS_ALL.PO_HEADER_ID = APPS_XXWRP_SERVICE_REG_ALL.PO_HEADER_ID) LEFT JOIN APPS_PO_VENDORS ON APPS_PO_HEADERS_ALL.VENDOR_ID = APPS_PO_VENDORS.VENDOR_ID) LEFT JOIN APPS_PO_LINES_ALL ON (APPS_PO_DISTRIBUTIONS_ALL.PO_HEADER_ID = APPS_PO_LINES_ALL.PO_HEADER_ID) AND (APPS_PO_DISTRIBUTIONS_ALL.PO_LINE_ID = APPS_PO_LINES_ALL.PO_LINE_ID)) LEFT JOIN APPS_XXWRP_GOODS_LINES_ALL ON APPS_PO_HEADERS_ALL.PO_HEADER_ID = APPS_XXWRP_GOODS_LINES_ALL.PO_HEADER_ID) LEFT JOIN APPS_XXWRP_GOODS_REG_ALL ON APPS_XXWRP_GOODS_LINES_ALL.REGISTRATION_ID = APPS_XXWRP_GOODS_REG_ALL.REGISTRATION_ID 
GROUP BY APPS_PO_HEADERS_ALL.PO_HEADER_ID, APPS_PO_HEADERS_ALL.SEGMENT1, APPS_PO_REQUISITION_LINES_ALL.ATTRIBUTE1, IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="","-",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="APW","AGREEMENT FOR PERFORMANCE OF WORK",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="APWEMER","AGREEMENT FOR PERFORMANCE OF WORK - EMERGENCY",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="CONS","CONSULTANT",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="CONCEMER","CONSULTANT - EMERGENCY",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="DFC","DIRECT FINANCIAL CONTRIBUTION",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="FELLOW","FELLOWSHIP",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="GENEXT","GENERAL EXTERNAL SERVICES",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="IMPRESTCC","IMPREST/CREDIT CARD",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="IS","INTERNAL SERVICES",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="LOA","LETTER OF AGREEMENT",IIf([APPS_XXWRP_SERVICE_REG_ALL]![DOCUMENT_TYPE]="TSA","TECHNICAL SERVICE AGREEMENT")))))))))))), IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="","-",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="UN","Procurement for UN/NGO",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="SP","Standard Procurement",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="RP","Reimbursable Procurement",IIf([APPS_XXWRP_GOODS_REG_ALL]![PROCUREMENT_TYPE]="EMER","EMERGENCY"))))), HR_HR_ALL_ORGANIZATION_UNITS.NAME, APPS_PO_HEADERS_ALL.CREATION_DATE, APPS_PO_HEADERS_ALL.AUTHORIZATION_STATUS, APPS_PO_HEADERS_ALL.APPROVED_DATE, APPS_PO_HEADERS_ALL.COMMENTS, APPS_PO_HEADERS_ALL.CLOSED_DATE, APPS_PO_HEADERS_ALL.CLOSED_CODE, AP_AP_INVOICE_DISTRIBUTIONS_ALL.INVOICE_ID, AP_AP_INVOICES_ALL.INVOICE_TYPE_LOOKUP_CODE, APPS_PO_VENDORS.VENDOR_NAME, APPS_PO_HEADERS_ALL.VENDOR_ID, AP_AP_INVOICES_ALL.INVOICE_DATE, AP_AP_INVOICES_ALL.INVOICE_NUM, AP_AP_INVOICES_ALL.INVOICE_AMOUNT, AP_AP_INVOICES_ALL.INVOICE_CURRENCY_CODE, AP_AP_INVOICES_ALL.GL_DATE, AP_AP_INVOICES_ALL.PAYMENT_CURRENCY_CODE, AP_AP_INVOICES_ALL.PAYMENT_CROSS_RATE, AP_AP_INVOICES_ALL.DESCRIPTION, AP_AP_INVOICES_ALL.EXCHANGE_RATE, AP_AP_INVOICES_ALL.BASE_AMOUNT, APPS_PO_LINES_ALL.QUANTITY, APPS_PO_LINES_ALL.UNIT_PRICE, APPS_PO_LINES_ALL.AMOUNT, APPS_PO_DISTRIBUTIONS_ALL.Rate 
HAVING (((APPS_PO_HEADERS_ALL.SEGMENT1)="201127602") AND ((APPS_PO_HEADERS_ALL.CREATION_DATE)>[AP_AP_INVOICES_ALL]![INVOICE_DATE])); 

Query Result with Error

Query design in Access

+1

基於連接的和的常見問題是,如果在任何地方有重複的行,結果將會相乘。但除此之外,將一些如此複雜的內容放入單個查詢中並不可取。這使得它很難理解和調試。你應該考慮重寫幾個步驟,如果需要的話會生成中間數據。 – 2017-06-12 12:30:10

+0

@ Barattolo_67是否使用MS Access爲Oracle E Biz數據庫創建sql? –

+0

我已將Ms Access連接到組織的副本Oracle Financials數據庫。 –

回答

0

在我通過創建Access報表基於查詢,並在caluclating報告本身每一個PO的總價值解決他的問題到底。