2016-02-18 39 views
1

我有一個數據庫,其中包括兩個表 - 站點和事件(這是所有有點簡化,但應該足以僞代碼或任何語言的合理示例)。 SITE不是特別重要,只是它是這個查詢的主題,SITE可以是ACTIVE或INACTIVE,並且他們有事件發生在他們身上。僞代碼/ SQL - 構建激活和禁用日期的激活期?

EVENT表具有字段ID,SITEID,EVENTTYPE,EVENTDATE。常見的EVENTTYPE是'激活'和'停用',但它們不是唯一可能的事件。 一個網站被視爲在其激活事件和停用事件之間激活。網站可能已多次激活或停用,但每次停用都保證與初始激活相匹配。

對於每一個單一的實體,我希望能夠輸出一個CSV文件如下:

Site ID, Activated Date, Deactivated Date 

凡再次,一個網站可能會在文件中多次因爲是主動多次出現。或者,如果網站仍處於活動狀態,則只會讀取

Site ID, Activated Date 

如果它在運行程序時處於活動狀態。 什麼是適當的僞代碼/代碼有效地匹配這些時期?

回答

0

可能的答案思想 - 可能有更好的那些,我回答我自己的問題!

對於每個站點,請按升序選擇Activations(x)和Deactivations(y)的列表。

由於停用必須具有匹配的激活,因此這兩個列表將形成自然(x,y)對,最後可能存在懸空激活。