Hallo
Ich habe eine Tabelle namens TITLEQUOTES. Sie ist mit Börsenschlusskursen gefüllt und hat als Felder eine ID (für das Wertpapier), Q_DATE (für das Datum) und QUOTE (für den Kurs).
Die Börsen sind in der Regel nur Montags bis Freitags offen, je nach Feiertag und je nach Land kann eine oder mehrere Börse auch unter der Woche geschlossen sein.
Mit
SELECT COUNT(*) FROM TITLEQUOTES WHERE Q_DATE = MAX(Q_DATE)
kann ich die Anzahl Kurse des aktuellsten Datums aus TITLEQUOTES herauslesen.
Nun kann es sein, dass am aktuellsten Datum nur 1 Kurs eingelesen ist. In diesem Fall möchte ich, dass es mir den gleichen SELECT auf das zweitaktuellste Datum macht.
Ich habe in PL SQL folgendes gedacht (ist nicht der ganze Code hier):
...
-- zaehler und anzahlKurse wurden oben als INT deklariert
zaehler := 0;
anzahlKurse := 0;
while anzahlKurse <= 1 loop
-- Die Variable anzahlKurse wird dann später im Skript ausgewertet.
SELECT COUNT(*) INTO anzahlKurse FROM TITLEQUOTES WHERE Q_DATE = MAX(Q_DATE-zaehler);
zaehler := (zaehler + 1);
END LOOP;
....
Nur funktioniert das leider nicht. Sagen wir, MAX(Q_DATE) sei ein Montag, mit nur 1 Kurs. Der Sonntag wird bestimmt keinen Kurs haben. So kriegt er irgendwie Probleme, weil das Datum des Sonntags nicht in der Tabelle vorkommt...
Ich habe schon vieles ausprobiert mit NULL-Funktionen, CASE etc... Ich blick nicht mehr durch. Kann mir jemand bitte helfen?
Vielen Dank!
Gruss
Marco
Ich habe eine Tabelle namens TITLEQUOTES. Sie ist mit Börsenschlusskursen gefüllt und hat als Felder eine ID (für das Wertpapier), Q_DATE (für das Datum) und QUOTE (für den Kurs).
Die Börsen sind in der Regel nur Montags bis Freitags offen, je nach Feiertag und je nach Land kann eine oder mehrere Börse auch unter der Woche geschlossen sein.
Mit
SELECT COUNT(*) FROM TITLEQUOTES WHERE Q_DATE = MAX(Q_DATE)
kann ich die Anzahl Kurse des aktuellsten Datums aus TITLEQUOTES herauslesen.
Nun kann es sein, dass am aktuellsten Datum nur 1 Kurs eingelesen ist. In diesem Fall möchte ich, dass es mir den gleichen SELECT auf das zweitaktuellste Datum macht.
Ich habe in PL SQL folgendes gedacht (ist nicht der ganze Code hier):
...
-- zaehler und anzahlKurse wurden oben als INT deklariert
zaehler := 0;
anzahlKurse := 0;
while anzahlKurse <= 1 loop
-- Die Variable anzahlKurse wird dann später im Skript ausgewertet.
SELECT COUNT(*) INTO anzahlKurse FROM TITLEQUOTES WHERE Q_DATE = MAX(Q_DATE-zaehler);
zaehler := (zaehler + 1);
END LOOP;
....
Nur funktioniert das leider nicht. Sagen wir, MAX(Q_DATE) sei ein Montag, mit nur 1 Kurs. Der Sonntag wird bestimmt keinen Kurs haben. So kriegt er irgendwie Probleme, weil das Datum des Sonntags nicht in der Tabelle vorkommt...
Ich habe schon vieles ausprobiert mit NULL-Funktionen, CASE etc... Ich blick nicht mehr durch. Kann mir jemand bitte helfen?
Vielen Dank!
Gruss
Marco
Comment