我有一個表結構的,簡化的,像這樣:我應該使用分區還是有更好的方法?
period_id int
suite_id varchar(20)
suite_status varchar(50)
每個月被分配到一個週期的id。每個套件都有一個記錄(period_id)。套房狀態可以是'空置'或'主動租賃'。我試圖寫一個查詢,顯示自2011年7月1日以來租用的前五筆交易中最長的一筆交易,然後他們成爲活躍租賃,但我不知道如何處理此問題。
我最初的方法是進行排名的時期,這是空的,像這樣的數量每個租賃:
;WITH cte_vacancy_periods AS
(
SELECT lp.suite_id ,
count(lp.period_id) AS 'Periods Vacant'
FROM property.lease_period lp
WHERE lp.suite_status = 'Vacant'
OR
( isnull(lp.suite_status, '') = ''
AND lp.lease_id = 'No Lease' )
GROUP BY
lp.suite_id
ORDER BY count(lp.period_id) desc
)
然後我打算交叉引用這與租賃的,因爲週期258激活( 2011年7月1日)。
不幸的是,如果租約空置兩個月,然後租用一個月,然後再空置兩個月(在出租前共有四個月,實際上應該是兩個空置) 。
我敢肯定這可以用分區來完成,但我已經試圖做到這一點,並不完全理解它們。我在解決這個問題方面缺少什麼?如果我已經解釋了數據不佳,所以很難理解我想要做什麼,請讓我知道,我會盡我所能詳細說明。
如果套件在2011年7月1日之前空置,然後在該日期之後出租,該怎麼辦?在計算連續空置時間的數量時,2011年7月前的這些時間是否應包括在計數中? – MatBailie
@Dems哦親愛的。我解釋得非常糟糕!基本上 - 我想顯示租賃自2011年7月1日至現在租賃之前租用的空置數量。當它們成爲活動租約時,只要在2011年7月1日(期間258) – Codingo
之後提供並且沒有問題,那麼應該計算在7月1日之前空置的月數。只想知道在租賃前租賃空置了多少個月 – Codingo