Kann mir jemand helfen zu verstehen, was mit dieser Db2-Abfragesyntax falsch ist, schlägt es mit SQLCODE -120 fehl, weil ich versuche, row_number() zu verwenden?DB2 - Ungültige Verwendung einer Aggregatfunktion SQLCODE = -120
SELECT COUNT(ORDER_ID) OVER() TOTAL_NO_OF_RECORDS,
ROW_NUMBER() OVER (ORDER BY CREATED_DATE DESC) AS ROW_NUM
FROM (
SELECT DISTINCT A.ORDER_ID ORDER_ID,
B.AgencyName AS AGENCY_NAME,
C.FirstName FIRST_NAME,
C.LastName LAST_NAME,
DEMOGRAPHIC.State STATE,
A.CreatedTS CREATED_DATE,
E.WritingTIN WRITING_TIN,
E.ParentTIN PARENT_TIN
FROM DBO.TABLE1 A
INNER JOIN
DBO.TABLE2 TABLE2 ON TABLE2.ORDER_ID=A.ORDER_ID
INNER JOIN
DBO.TABLE3 TABLE3 ON TABLE3.QuoteId=TABLE2.QuoteId
INNER JOIN
DBO.Demographic DEMOGRAPHIC ON
DEMOGRAPHIC.DemographicId=TABLE3 .DemographicId
INNER JOIN
DBO.Agent E ON E.AgentId=DEMOGRAPHIC.AgentId
INNER JOIN
DBO.User USER ON USER.WebAcctID=AGENT.WebAcctId
INNER JOIN
DBO.Shopper SHOPPER ON SHOPPER.ShopperId=DEMOGRAPHIC.ShopperId
LEFT OUTER JOIN
DBO.Subsidy D ON D.demographicId=DEMOGRAPHIC.demographicId
LEFT OUTER JOIN
DBO.Employer EMPLOYER ON DEMOGRAPHIC.demographicId=EMPLOYER.demographicId
WHERE E.WritingTIN = 'XYZ' AND E.ParentTIN = 'XYZ'
AND DEMOGRAPHIC.State='OH'
AND A.Status IN ('X','Y','Z')
)AS ORDER_DETAILS
where ROW_NUMBER() OVER (ORDER BY CREATED_DATE DESC) BETWEEN ((1*50)-50)+1 AND 1*50 ORDER BY CREATED_DATE DESC
Fehler angezeigt: Ungültige Verwendung einer Aggregatfunktion oder OLAP-Funktion .. SQLCODE = -120, SQLSTATE = 42903, DRIVER = 4.18.60
Wenn LEFT JOIN, setzen Sie die Bedingungen der rechten Seitentabelle in die ON-Klausel, um echtes LINKES JOIN-Verhalten zu erhalten. (Wenn Sie in WHERE, erhalten Sie regelmäßige innere Join-Ergebnis ...) – jarlh
@ Jarlh Problem ist nicht wegen Join .. es ist aufgrund der falschen Verwendung von Aggregat-Funktion .. ich habe gerade die Abfrage zur Vereinfachung geändert. Fehler: Ungültige Verwendung einer Aggregatfunktion oder OLAP-Funktion. SQLCODE = -120, SQLSTATE = 42903 – RVR
Mein Kommentar war nicht dazu gedacht, das Problem zu lösen, sondern nur, um Joins zu verbessern. – jarlh