Mysql - Problem mit SQL-Abfrage


spek1

Grünschnabel
Hallo,
ich bekomme die sql Abfrage nicht hin :-(.
Ich hoffe mir kann hier jemand helfen.

Tabelle soll nach nach ISIN gruppiert werden und die jeweiligen 5 Kurse mit dazugehörigem Datum als neue Spalten angereiht werden.

Ausgangssituation Tabelle:

isinkursdatum
DE0008404005231.1320200214
DE0008404005230.1020200221
DE0008404005221.7020191025
DE0008404005220.5020191220
DE0008404005220.4520200110
DE0008430026282.3020200214
DE0008430026276.5520200207
DE0008430026274.5520200221
DE0008430026271.8520200124
DE0008430026268.2520200117


Gesuchtes Ergebnis:

-------- Werte nach Betrag absteigend ------> ------- Datum zum entsprechenden Kurswert lt. Ausgangstabelle ----
ISIN kurs1 kurs2 kurs3 kurs4 kurs5 datum1 datum2 datum3 datum4 datum5
DE0008404005 231.13 230.10 221.70 220.50 220.45 20200214 20200221 20191025 20191220 20200110
DE0008430026 282.30 276.55 274.55 271.85 268.25 20200214 20200207 20200221 20200124 20200117

Besten Dank schon mal im voraus.

Spek1
 

Sempervivum

Erfahrenes Mitglied
Erst nach ISIN und dann nach Kurs sortieren? Bei der Auswertung mit PHP dann Kurs und Datum für die selbe ISIN auf einer Zeile zusammen fassen. Erkennt man eine neue ISIN, eine neue Zeile beginnen
 

spek1

Grünschnabel
Hallo Zvoni,
ich glaube transponieren löst das Problem nicht ganz.
Ich möchte den höchsten kurs nach Kurs1, den zweithöchsten kurs nach Kurs2 usw. schreiben
Datum1 soll das dazugehörige Datum zu Kurs1 enthalten usw.
 

spek1

Grünschnabel
Hallo Sempervivum,
Du beschreibst die Anforderung richtig, aber wie lässt sich das grob in mysql umsetzen
 

Sempervivum

Erfahrenes Mitglied
Ich hatte da ein wenig nachgelesen, aber eine Lösung mit SQL war mir zu kompliziert um einzusteigen. Würde das mit PHP umstellen und in die neue Tabelle eintragen.
 

Sempervivum

Erfahrenes Mitglied
Mit PDO und Gruppierung sind es nur wenige Zeilen. Die Beispiele, die ich bei Lösungen mit SQL gesehen habe, waren komplizierter:
Code:
$query = "SELECT isin, kurs, datum FROM isin_kurs
    ORDER BY isin asc, kurs desc";
$statement = $pdo->prepare($query);
$statement->execute();
$result = $statement->fetchAll(PDO::FETCH_GROUP);
foreach ($result as $isin => $grp) {
    $kurse = [];
    $daten = [];
    foreach ($grp as $item) {
        $kurse[] = $item['kurs'];
        $daten[] = $item['datum'];
    }
    $newrow = array_merge([$isin], $kurse, $daten);
    var_dump($newrow);
}