Re: Oracle-SQL: wie Preisentwicklung darstellen?
Geizhals » Forum » Programmierung » Excel: wie Preisentwicklung darstellen? (5 Beiträge, 374 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Oracle-SQL: wie Preisentwicklung darstellen?
25.08.2017, 21:58:20
Hallo!

Anmerkung: Dies war ursprünglich ein Excel-Problem - ist aber jetzt ein SQL-Problem.

Ich habe eine Tabelle mit Artikeln und eine mit Preisen. Wenn sich der Preis eines Artikels ändert wird ein Eintrag gemacht. Dies kann mehrmals pro Monat der Fall sein  oder nur alle paar Monate.

Nun möchte ich eine Abfrage erstellen, die mir die Preisentwicklung in den letzten Monaten anzeigt. Stichtag ist immer der Monatsletzte. Also, wenn es mehrere Einträge/Monat gibt, dann zählt jener der am nächsten zum Stichtag kommt. Gibt es gar keinen in dem Monat, dann soll der letzte vom Vormonat oder davor genommen werden.

Ich habe schon eine Abfrage, nur klaptt es mit Oracle-SQL nicht, weil es TOP 1 nicht gibt und ORDER BY im Sub-Select nicht gestattet ist. Wie kann man das mit Orcale-SQL lösen?


z.B. Preistabelle:

Artikel|Datum|Preis|
A   01.01.2017  100  
A   23.03.2017  120  
A   24.03.2017  125  
B   05.01.2017  500  
B   06.06.2017  490  

weiters gitb es eine Tabelle mit allen Artikeln und eine Kalendertabelle, die etwa so aussieht

Jahr|Monat|Monatsletzter
2017 1 31.01.2017
2017 2 20.02.2017 ....


gewünschtes Ergebnis:

Artikel Jän|Feb|Mär|Apr|Mai|Juni|Juli|....
A        100 100 125 125 125 125 125..    
B        500 500 500 500 500 490 490..



SELECT
   A.Artikel,
   K.Monatsletzter,
   (
      SELECT TOP 1
         P.Preis
      FROM
         Preistabelle AS P
      WHERE
         P.Artikel = A.Artikel
            AND
         P.Preisdatum <= K.Monatsletzter
      ORDER BY
         P.Preisdatum DESC
   ) AS GueltPreis
FROM
   Artikeltabelle AS A,
   Kalendertabelle AS K
WHERE
   K.Monatsletzter BETWEEN [Zeitraumbeginn]
      AND
   [Zeitraumende]



29.08.2017, 11:52 Uhr - Editiert von wasikonier, alte Version: hier
Antworten PM Alle Thread
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung