Ich habe eine Tabelle, die Datensätze in 5-Minuten-Schritten hat, die wie folgt aussieht:Markieren Sie eine Zeile in jeder Zeile
UDSNSI TIMESTAMP
-8134 7/20/2016 4:30:00 AM
-8125 7/20/2016 4:35:00 AM
-8098 7/20/2016 4:40:00 AM
ich von so auswählen muß das wäre Erstellen Sie ein Ergebnis für jede Minute bis zu der Zeit in der nächsten Zeile von jetzt bis zu den letzten 5 Stunden. Zum Beispiel:
UDSNSI TIMESTAMP
-8134 7/20/2016 4:30:00 AM
-8134 7/20/2016 4:31:00 AM
-8134 7/20/2016 4:32:00 AM
-8134 7/20/2016 4:33:00 AM
-8134 7/20/2016 4:34:00 AM
-8125 7/20/2016 4:35:00 AM
-8125 7/20/2016 4:36:00 AM
-8125 7/20/2016 4:37:00 AM
...
Ich fühle mich wie ich „CONNECT BY“ aber ich kann nicht scheinen, um herauszufinden, wie es zu sagen, zu verwenden, den Zeitstempel von einer Zeile als Start und der nächste Zeile als Ende verwenden kann jedes Mal.
select udsnsi,
timestamp
from plan
where timestamp <sysdate and timestamp >= sysdate - 5/24
connect by timestamp <=
(
select .... timestamp from row X and row X + 1
and create a row for every minute value in between
using X's udsnsi value
)
Wenn die bestehenden Zeilen in der Tat sind, wie Sie gesagt haben, fünf Minuten auseinander, warum müssen Sie mit der nächsten Zeile vergleichen? Oder sind sie nicht wirklich genau fünf Minuten auseinander, jedes Mal? – mathguy
@mathguy Sie sind genau 5 Minuten auseinander, ich glaube, ich habe nicht darüber nachgedacht, die Reihe nicht wirklich in Betracht zu ziehen. Ich könnte mir einfach eine Zeit nehmen und jedes Mal 4 Minuten hinzufügen. – jrandomuser
Dann ist die Lösung viel einfacher, ich habe es meiner Antwort hinzugefügt. – mathguy