Ich versuche, Daten in Bezug auf Rechnungen abrufen. Es gibt mehrere Datensätze pro Rechnung, die Originalrechnung, Zahlungen, Gutschriften. Ich brauche Daten basierend auf zwei Feld, record_type (I = Rechnung, C = Kredit, P = Zahlung ...) und Quelle (B = Abrechnung, C = Geldeingang ...).Mehrere Datenzeilen basierend auf zwei Kriterien abrufen müssen
Ich muss die abgerufenen Datensätze auf source = B beschränken und alle Datensätze von record_type <> P erhalten, aber wo ist ein record_type = C vorhanden.
Beispiel-Datensatz:
Invoice Amount record_type source --comment
12345 100 I B original invoice
12345 -100 C B credit memo
12345 80 I B revised invoice
12345 -80 P C payment
23456 200 I B original invoice
23456 -10 C C cash receipt adjust
34567 300 I B original invoice
Die abgerufenen Datensätze sollte sein:
Invoice Amount record_type source --comment
12345 100 I B original invoice
12345 -100 C B credit memo
12345 80 I B revised invoice
Hier ist der Code, den ich bis jetzt haben.
SELECT
ot.order_id,
ot.customer_id,
c.name,
ot.gl_date,
ot.amount,
ot.record_type,
ot.source
FROM open_item ot
JOIN customer c ON c.id = ot.customer_id and
c.company_id = 'TMS'
JOIN orders o ON o.id = ot.order_id
WHERE
ot.source = 'B' AND
ot.gl_date >= {d '2016-03-01'} AND
ot.gl_date <= {d '2016-03-31'} AND
ot.record_type <> 'P' AND
EXISTS (SELECT 1 FROM open_item ot2
WHERE ot2.order_id = ot.order_id AND
ot2.record_type = 'C' AND ot2.source = 'B')
ORDER BY
ot.order_id
Dank @GordonLinoff für die Hilfe mich bis hierher zu bekommen. Ich bekomme auch einen Fehler basierend auf meiner ORDERBY, aber das ist ein kleines Problem für jetzt.
Das hat funktioniert. Vielen Dank! Jetzt, um herauszufinden, warum ORDER BY nicht funktioniert. Etwas über nicht in einer Aggregatfunktion oder die GROUP BY-Klausel enthalten sein ..... –
Ich sehe nichts in dieser Abfrage aggregieren Daten. Gibt es einen Code davor oder danach, der diesen Fehler erzeugt oder mit dieser Abfrage verknüpft wird? – dbbri
Für Datensätze, die eine "C" record_type und "C" Quelle haben, wird nur der Datensatz mit dem "I" record_type aufgelistet. In meinem Beispieldatensatz wird nur die erste Zeile der Rechnung 23456 angezeigt und ich versuche, dies wegzulassen. –