SELECT (count(*) * sum(s."price")) AS amount
, 'rma' AS "creditType"
, c."company" AS "client"
, c.id AS "ClientId"
, r.*
FROM "Rmas" r
JOIN "EsnsRmas" er ON er."RmaId" = r."id"
JOIN "Esns" e ON e.id = er."EsnId"
JOIN (
SELECT DISTINCT ON ("EsnId") *
FROM "EsnsSalesOrderItems"
ORDER BY "EsnId", "createdAt" DESC
) es ON es."EsnId" = e."id"
JOIN "SalesOrderItems" s ON s."id" = es."SalesOrderItemId"
JOIN "Clients" c ON c."id" = r."ClientId"
WHERE r."credited" = FALSE
AND r."verifyStatus" IS NOT NULL
GROUP BY c.id, r.id;
प्रश्न में आपकी क्वेरी में एक अन्य समुच्चय पर एक अवैध समुच्चय है:
sum((select count(*) as itemCount) * "SalesOrderItems"."price") as amount
सरलीकृत और कानूनी सिंटैक्स में परिवर्तित:
(count(*) * sum(s."price")) AS amount
लेकिन क्या आप वाकई प्रति समूह की संख्या से गुणा करना चाहते हैं?
मैं "EsnsSalesOrderItems"
. में प्रति समूह एकल पंक्ति पुनर्प्राप्त करता हूं DISTINCT ON
. के साथ . विस्तृत विवरण:
मैंने मानव आंखों के लिए क्वेरी को आसान बनाने के लिए टेबल उपनाम और स्वरूपण भी जोड़ा। अगर आप कैमल केस से बच सकते हैं तो आप सभी दोहरे उद्धरण चिह्नों से छुटकारा पा सकता है दृश्य को धूमिल करना।