Ich habe einen Datensatz, der etwa wie folgt aussieht:Einstürzen Datumsbereiche in SQL (Netezza)
Visit ID Admission Date Discharge Date Unit
20 01/01/2015 12:45 01/01/2015 13:57 ER
20 01/03/2015 13:57 01/04/2015 11:57 ER
20 01/04/2015 11:57 01/04/2015 19:32 Trauma
20 01/04/2015 19:32 01/04/2015 21:22 ER
Mein Ziel ist der Eintritt/Entlade-Daten für jede Einheit zu erhalten. Das Problem besteht darin, dass Patienten manchmal Betten in derselben Einheit wechseln, und diese Aktion wird als Übertragung bezeichnet, obwohl sich der Patient noch in derselben Einheit befindet. So würde Ich mag diejenigen Datum zusammenzubrechen reicht, so dass die Ausgabe sieht stattdessen wie folgt aus:
Visit ID Admission Date Discharge Date Unit
20 01/01/2015 12:45 01/01/2015 11:57 ER
20 01/04/2015 11:57 01/04/2015 19:32 Trauma
20 01/04/2015 19:32 01/04/2015 21:22 ER
Ich weiß nicht, wie dies zu erreichen ... Ich dachte an welche Partition ich verwenden sollte, aber jeder Rang Partition I kann sich vorstellen (rank/dose_rank) weist den ersten beiden ER-Werten den gleichen Rang zu wie dem letzten ER-Wert, was inkorrekt wäre.
Grundsätzlich meine Frage ist die gleiche diese ungelöste Frage: Collapsing date records only if the value doesn't change - Oracle SQL
Ich bin mit Netezza.
Zwei Fragen: 1) Sind die Felder in der Partition von t oder tprev? 2) Ich bin nicht ganz sicher, was die Summe tut, kann ich die Ausgabe sehen, aber ich bin zugegebenermaßen verwirrt – user3642531
Die Felder sind von 't'; 'tprev' wird nur verwendet, um die Informationen für die Flagge zu erhalten. Die 'sum()' ist eine kumulative Summe, die verwendet wird, um eine Gruppe benachbarten Reihen zuzuweisen. Der Wert sollte für das, was Sie eine Gruppe nennen möchten, konstant sein. –
Ich verstehe es jetzt. Und es funktioniert. Vielen Dank! – user3642531