Kombinieren Zeilen, wenn die Endzeit der einen ist die Startzeit eines anderen (Oracle)

Ich kann einfach nicht scheinen, um diese Abfrage herausgefunden. Ich brauche kombinieren, um Reihen von Zeit-aufeinander folgende Staaten in einer einzigen Staates.

Diese Frage ist ähnlich der Frage gefunden, außer hier arbeite ich mit Oracle 10 nicht-SQL Server: Kombinieren Zeilen, wenn die Endzeit der einen ist die Startzeit eines anderen

Beispiel Daten:

name      start_inst         end_inst            code     subcode
Person1 9/12/2011 10:55 9/12/2011 11:49           161   50
Person1 9/12/2011 11:49 9/12/2011 11:55           107   28
Person1 9/12/2011 11:55 9/12/2011 12:07           161   50
Person1 9/12/2011 12:07 9/12/2011 12:26           161   50
Person1 9/12/2011 12:26 9/12/2011 12:57           161   71
Person1 9/12/2011 12:57 9/12/2011 13:07           161   71
Person1 9/12/2011 13:07 9/12/2011 13:20            52   50

Und ich möchte die folgende Ausgabe erhalten:

name       start_inst       end_inst            code     subcode
Person1 9/12/2011 10:55     9/12/2011 11:49     161     50
Person1 9/12/2011 11:49     9/12/2011 11:55     107     28
Person1 9/12/2011 11:55     9/12/2011 12:26     161     50
Person1 9/12/2011 12:26     9/12/2011 13:07     161     71
Person1 9/12/2011 13:07     9/12/2011 13:20     52      50

Hier ist Beispiel SQL:

CREATE TABLE Data (
    name varchar2(132 BYTE) not null,
    start_inst DATE not null,
    end_inst DATE not null,    
code number(3) not null,
subcode number(3) not null
);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 10:55','9/12/2011 11:49',161, 50);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 11:49','9/12/2011 11:55',107,28);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 11:55','9/12/2011 12:07',161,50);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 12:07','9/12/2011 12:26',161,50);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 12:26','9/12/2011 12:57',161,71);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 12:57','9/12/2011 13:07',161,71);
INSERT INTO Data(name,start_inst,end_inst, code, code2) VALUES('Person1','9/12/2011 13:07','9/12/2011 13:20',52,50);

Vielen Dank im Voraus!

  • Um Ihr Beispiel SQL korrekt ausgeführt wird, möglicherweise die folgenden änderungen vornehmen: a) fügen Sie ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH24:MI'; vor dem INSERT-Anweisungen, so dass die Datums-Zeichenketten korrekt interpretiert werden (oder explizit TO_DATE mit diesem format in die INSERT-Anweisungen), und b) ändern Sie die INSERT-Anweisungen zu verwenden "subcode" statt "code2", so dass Sie Stimme mit der CREATE TABLE-Anweisung.
  • Pflege zu wählen und akzeptieren Sie die Antwort, die Ihnen geholfen?
InformationsquelleAutor ScottCollier | 2011-09-14
Schreibe einen Kommentar