Hi,
ich versuch diese MySQL-Abfrage unter Oracle-SQL zum Laufen zu bekommen.
Probleme machen das "ORDER BY" in der Sub-Query (nicht erlaubt) und "LIMIT 1" (ROWNUM=1?)
Es geht darum aus der Preisliste jenen Preis zu ermitteln, dessen Datum am nächsten am entsprechenen Monatsletzten liegt. In MySQL sortiere ich die Preise einfach nach Datum absteigend und nehme die erste Zeile. Wie geht das in Oracle?
siehe auch SQL-Fiddle SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.
ich versuch diese MySQL-Abfrage unter Oracle-SQL zum Laufen zu bekommen.
Probleme machen das "ORDER BY" in der Sub-Query (nicht erlaubt) und "LIMIT 1" (ROWNUM=1?)
Es geht darum aus der Preisliste jenen Preis zu ermitteln, dessen Datum am nächsten am entsprechenen Monatsletzten liegt. In MySQL sortiere ich die Preise einfach nach Datum absteigend und nehme die erste Zeile. Wie geht das in Oracle?
siehe auch SQL-Fiddle SQL Fiddle | A tool for easy online testing and sharing of database problems and their solutions.
Code:
SELECT
A.artikel,
K.monat,
(
SELECT
P.preis
FROM
Preisliste AS P
WHERE
P.artikel = A.artikel
AND
P.datum <= K.monatsletzter
ORDER BY
P.datum DESC
LIMIT 1
) AS Monatspreis
FROM
Artikel AS A,
Kalender AS K
ORDER BY artikel,k.jahr,k.monat