我正在使用一個表格,每個ID都有一個「事件」列表,其中一個事件是否由該ID表示的對象變爲「開「或」關「。如果它們不在此表中,則假定項目從關閉開始。一件物品如果在那時尚未開啓,則只能依法繼續。Oracle SQL - 使用「不可能」日期範圍修復數據
下面是它可能看起來像一個例子:
Events
ID Type Date
1 On 01-MAY-12
1 Off 01-JUN-12
1 On 05-JUN-12
不幸的是,這個數據是可怕的,它充滿了不可能的事。以下是該表的一部分,實際上是這樣的:
Events
ID Type Date
1 On 01-MAY-12
1 On 01-MAY-12
1 On 01-JUN-12
1 Off 01-JUL-12
1 Off 01-AUG-12
1 On 05-AUG-12
我想要做的就是寫一個返回該表中沒有垃圾數據,查詢在那裏不可能行(即,把該項目時,它的行已經打開,或已關閉時關閉)被刪除。
我並不在乎它在第一次被開啓之前「關閉」的情況,因爲我不相信我們有任何這種情況。
所以說,查詢將返回:
Events
ID Type Date
1 On 01-MAY-12
1 Off 01-JUL-12
1 On 01-AUG-12
如何做到這一點有什麼想法?這種「在條件X下返回第一行」的邏輯給我帶來了很多困難。如果我只想要第一排或第一排,我可以分組,並抓住一分鐘。但在這種情況下我該如何做?
我注意到''(ID,Date)'中有一些重複,至少在一天的粒度。在這種情況下,你如何決定哪個更老,哪個更新?他們有不同的小時/分鐘/秒嗎? – ruakh
@ruakh我並不在乎,但在這種情況下,這是因爲粒度降到了秒,所以一個真正在另一個之前。 – Jeremy