Ich habe eine Tabelle, in der jede Position eine Einheit #, Datumsstempel und Bettanzahl enthält. Für jede Einheit mit der Anzahl der Betten wird jeden Tag ein Datensatz erstellt.SQL Server DENSE_RANK()
Unit DateTime Beds
----------------------
ICU 2011-03-23 12
ICU 2011-03-24 24
ICU 2011-03-25 24
ICU 2011-03-26 35
ICU 2011-03-27 24
ICU 2011-03-28 24
Ich bin versucht, die Daten zu nehmen und eine Tabelle wie die unten erstellen.
Unit Beds StartDate EndDate
------------------------------
ICU 12 2011-03-23 2011-03-23
ICU 24 2011-03-24 2011-03-25
ICU 35 2011-03-26 2011-03-26
ICU 24 2011-03-27 2011-03-28
Das Problem ist, dass die Zeilen mit 24 Betten kombiniert werden, diese Ergebnisse zu erhalten.
Unit Beds StartDate EndDate
------------------------------
ICU 12 2011-03-23 2011-03-23
ICU 24 2011-03-24 2011-03-28
ICU 35 2011-03-26 2011-03-26
Ich versuchte DENSE_RANK mit einem Ranking zuweisen als Gruppierungsnummer zu verwenden, um die Instanzen der 24 Betten zu trennen. Ich möchte die Grouper-Werte 1,2,2,3,4,4 haben. Stattdessen sind die Grouper-Werte 1,2,2,3,2,2.
SELECT DENSE_RANK() OVER(PARTITION BY Unit ORDER BY Beds) AS Grouper,
Unit, DateTime, Beds
FROM StatsLocation
Grouper Unit DateTime Beds
-------------------------------
1 ICU 2011-03-23 12
2 ICU 2011-03-24 24
2 ICU 2011-03-25 24
3 ICU 2011-03-26 35
2 ICU 2011-03-27 24
2 ICU 2011-03-28 24
Sie könnte interessiert sein an [* diese Antwort auf, "Lösen von Lücken und Inseln" mit row_number() und d ense_rank()? *] (http://dba.stackexchange.com/a/167069/2639) –