Ich habe eine Tabelle "stocks_prices" mit den Einträgen gvkey, iid, datecol und prccd. Sie stellt den Preis (prccd) einer Aktie (dargestellt durch ihren gvkey und iid) auf Datecol (YYYY-MM-DD) dar. Ich möchte alle meine Daten und die gleiche Zeile mit dem Preis am ersten Tag des Monats und neben dem Preis auf datecol - 35 Tage (dh was war sein Preis 35 Tage vorher) suchen, aber es muss sein ein Wochentag (keine Einträge am Wochenende).Wählen Sie den nächsten Wochentag in einem Bereich
Für jetzt habe ich das:
SELECT b1.gvkey, b1.iid, b1.datecol, b1.prccd,
b2.datecol as '35days', (b2.prccd - b1.prccd)/b1.prccd
FROM stocks_prices b1
LEFT JOIN stocks_prices b2
ON b1.datecol = DATE_ADD(b2.datecol, INTERVAL 35 DAY)
AND b1.gvkey = b2.gvkey
AND b1.iid = b2.iid
WHERE b1.datecol in ('2015-01-02', '2015-02-02', '2015-03-02', '2015-04-01', '2015-05-01', '2015-06-01', '2015-07-01', '2015-08-03', '2015-09-01',
'2015-10-01', '2015-11-02', '2015-12-01')
Es funktioniert, aber nicht genau so, wie ich will (es sieht genau 35 Tage zurück, ich mag es am nächsten Tag verfügbar dauern). Ich hoffe, es ist keine triviale Frage, ich beginne gerade mit MySQL.
Vielen Dank im Voraus.
Bitte markieren Sie Ihre Frage mit der Datenbank, die Sie verwenden. Außerdem sind Beispieldaten und gewünschte Ergebnisse hilfreich, um zu kommunizieren, was Sie tun möchten. –