각 광고 항목에 단위 #, 날짜 스탬프 및 침대 수를 포함하는 테이블이 있습니다. 침대 개수에 따라 각 단위에 대한 기록이 매일 작성됩니다.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
데이터를 가져 와서 다음과 같은 테이블을 만들려고합니다.
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
문제는 24 개의 침대가있는 행이 결합되어 이러한 결과를 얻는다는 것입니다.
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
DENSE_RANK를 사용하여 24 개의 침대 인스턴스를 구분하는 그룹 번호로 순위를 지정하려고했습니다. 나는 그루퍼 값을 1,2,2,3,4,4로하고 싶다. 대신 그루퍼 값은 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
당신을 row_number()와 d를 사용하여 "Gaps and Islands"에 대한 [*이 대답에 관심이있을 수 있습니다. ense_rank()? *] (http://dba.stackexchange.com/a/167069/2639) –