請原諒,如果標題不夠描述。
這裏是我的問題情景:查詢有條件地計算數據與以前的記錄
我有一個表有以下的列(由):
oid rev state time
1 0 S T1
2 0 S T2
1 0 A T3
2 0 A T4
2 1 MS T5
2 1 MA T6
2 1 M T7
2 2 MS T8
2 2 M T9
時間列是VARCHAR(含日期/時間)
我需要找到從狀態爲每個訂單採取轉變到狀態時間 - 有效的狀態轉換的定義如下:
S->A
MS->MA
MS-M
(即,過渡可以是從提交給ACK,修改。 - 提交修改 - 確認或修改 - 提交修改) 和MS可以轉換到MA然後轉換到M,但是我只對從MS到MA的轉換感興趣。
在上述:
oid 1 transitioned from S to A.
oid 2 changed from S to A (rev 0)
oid 2 changed from MS to MA (rev 1) - here we don't want to consider transition to M
oid 2 changed from MS to M (rev 2)
所以查詢輸出應如下(timeTaken將是的毫秒):
oid rev timeTaken state
1 0 (T3-T1) A
2 0 (T4-T2) A
2 1 (T6-T5) MA
2 2 (T9-T8) M
所以,如果當前記錄狀態是MA或M的時間差只有在先前的記錄狀態是MS時才需要計算(假設這是按照oid,rev,time命令的)。如果當前記錄狀態是M,則如果先前記錄狀態是MA,則跳過。
有沒有辦法在mysql中使用sql查詢來做到這一點。任何指針都會有幫助。謝謝。
====
該表有時間作爲主鍵。
我有這個疑問得到它以正確的方式排序(如果它以任何方式幫助)
從訂單的訂單ID,時間選擇OID,轉速,狀態,時間,轉速
這將得到:
OID轉狀態時
1 0 S T1
1 0 A T3
2 0 S T2
2 0 T4
2 1 MS T5
2 1 MA T6
2 1M的T7
2 2 MS T8
2 2M的T9
會幫助呢?
問題,如果你的原始表有某種自動遞增的id,這可能會容易得多。可以? – 2011-12-22 03:53:15
,我們可以假設時間被分類? – 2011-12-22 04:24:54
我有這個查詢,以正確的方式得到它: – 2011-12-22 17:53:01