2016-01-13 25 views
0

當記錄被掛起並多次激活時,如何計算日誌的日期。我想在每次暫停時都分配一個連續號碼嗎?還是有更好的方法來做到這一點?計算記錄的多個暫停狀態

例如

If count(suspendeddate)++ >1 set sequentialnumber to 1, 2, 3 

DATA:

id logdate status 
1 1/1/2015 suspended 
1 1/2/2015 active 
1 1/3/2015 active 
1 1/5/2015 active 
1 1/5/2015 suspended 
2 1/2/2015 suspended 
2 1/6/2015 active 
2 1/7/2015 active 

結果

id suspendeddays1 suspendeddays2 
1 1    369 
2 4    0 

回答

0

要計算懸浮天,使用lead()

select d.*, 
     datediff(day, logdate, next_logdate) daysOfSuspend 
from (select d.*, 
      lead(logdate) over (partition by id order b logdate) as next_logdate 
     from data d 
    ) t 
where status = 'suspended'; 

這會將每個暫停放在單獨的行上,而不是放在單獨的列中。

+0

如果有多個狀態更改,可以說某種原因,記錄連續2或3次更改狀態變爲活動狀態?編輯示例。 – EPV

+0

由於這是兼容性問題,無法使用鉛。 – EPV

+0

@EPV。 。 。每個「暫停」狀態在下一個記錄結束。此代碼仍然有效。 –