Ich bin neu in der Welt der PL/SQL und Oracle SQL-Abfragen.Wie über Daten von einer Oracle-Abfrage in einer anderen Abfrage zu iterieren.
Was versuche ich zu erreichen?
Erhalten Sie alle Boxen, die am letzten 100. Tag von heute (Sysdate - 100) mit Label "600" ausgeliefert werden. Von diesen Boxen muss ich die Boxen trennen, die eine aktualisierte Bezeichnung von "50" und "51" haben.
Logic:
1. Holen Sie sich alle Versandkartons auf der letzten 100. mit Label "600". Außerdem erhalten Sie die Anzahl der in den letzten 100 Tagen mit Label "600" versandten Produkte. (ZB, heute ist 09/06, erhalten Sie alle Boxen, die am 29.05 gesendet werden) 2. Holen Sie sich die Anzahl aller Felder, die eine aktualisierte Bezeichnung haben. E.G, am 06/01 einer der Boxen wechselte von "600" -> "50", müsste ich diese Box berücksichtigen.
Ich versuche, einen PL/SQL-Code für diesen Anwendungsfall zu schreiben, und das ist so weit ich erreicht haben.
VARIABLE box_id CHAR(50);
BEGIN
FOR box_id IN (SELECT
box_id, box_lable
FROM
my.box_table
WHERE box_lable = '600'
AND trunc(boxed_date) = trunc(SYSDATE - 100)
) LOOP
select count(*), box_lable
from my.shipping_info si
where box_id = si.box_id
and box_lable in ('51', '50')
group by box_lable
--COde to print the count of box_label = 600; count of box_label = 51; count of box_label = 50 .
END LOOP;
END;
Der obige Code wirft einen Fehler in SQL Developer. Ich betreibe dies auf Oracle 11g und Oracle 12c. Ich bin flexibel, jeden Ansatz (nicht unbedingt PL/SQL) zu verwenden, solange die Lösung für Oracle funktioniert.
Können Sie bitte machen Sie uns die Änderungen, die ich brauche, um diesen Code-Schnipsel zu laufen?
Also: Sie haben zwei Tabellen, 'box_table' und' shipping_info'? Ist 'box_id' eindeutig (vielleicht Primärschlüssel) in einer Tabelle und Fremdschlüssel in der anderen? Was ist ein "aktualisiertes" Label - nur ein Label (für dieses 'box_id'), das in der' shipping_info' Tabelle zu finden ist? Das sind alles Informationen, die Sie in Ihrem Beitrag angeben sollten - zusätzlich zum Code, wie Sie es getan haben. – mathguy