Mehrfachausgabe eines Datensatzes per SELECT

tiger1

Grünschnabel
Hallo,

ich würde gerne aus einer Tabelle die eine Spalte mit Stundenangaben hat mit SELECT eine Ausgabe erzeugen, die mir die gleiche Tabelle ausgibt, jedoch aus jeder Zeile der Ursprungstabelle 4 neue Zeilen macht, auf die jeweils zum Vorgänger eine Viertelstunde auf- addiert wird.

z.B

Code:
Tabelle
------------------------------------------------------
Stunde                        |        Menge
------------------------------------------------------
2013-06-16 00:00       |        1
2013-06-16 01:00       |        2




Code:
SELECT Ergebnis ?
------------------------------------------------------
Stunde                        |        Menge
------------------------------------------------------
2013-06-16 00:00       |        1
2013-06-16 00:15       |        1
2013-06-16 00:30       |        1
2013-06-16 00:45       |        1
2013-06-16 01:00       |        2
2013-06-16 01:15       |        2
2013-06-16 01:30       |        2
2013-06-16 01:45       |        2



Mit einer Procedure die eine neue temporäre Tabelle anlegt und dort mit einer Schleife die Werte aus der Ursprungstabelle einträgt, ist mir das schon gelungen. Aber besonders elegant finde ich diese Lösung nicht. Daher würde mich interessieren ob man man diese Aufgabe mit einem SELECT lösen kann ?
 
Zuletzt bearbeitet:
SQL:
SELECT datum, DATE_ADD(datum INTERVAL 15 MINUTE) AS datum2 FROM tabelle

Schau dir mal DATE_ADD an, damit kannst du die gewünschten Minuten zum Originalfeld hinzuaddieren.

Ist nur die Kurzfassung weil von Handy geschrieben!
 
Merci, das addieren funktioniert prima. Schwierig is nur die Zeilen zu vervielfältigen. Dafür brauch ich zwingend eine Schleife, die aber meines Wissens innerhalb von Select-Befehlen nicht funktionieren. Wenn's eine andere Möglichkeit gibt, bitte sagen !
 
In deinem n Fall kannst du das mit einem UNION lösen
SQL:
-- Volle Stunde
SELECT 
    datum,
    menge
FROM 
    tabelle
-- +15 Minuten
UNION ALL
SELECT 
    DATE_ADD(datum INTERVAL 15 MINUTE) AS datum,
    menge
FROM 
    tabelle
-- +30 Minuten
UNION ALL
SELECT 
    DATE_ADD(datum INTERVAL 30 MINUTE) AS datum,
    menge
FROM 
    tabelle
-- +45 Minuten
UNION ALL
SELECT 
    DATE_ADD(datum INTERVAL 45 MINUTE) AS datum,
    menge
FROM 
    tabelle
-- und sortieren
ORDER BY
    datum
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück