次の SQL クエリがあります。
SELECT t.trans_id, t.business_process_id, tsp.status, tsp.timestamp
FROM tran_stat_p tsp, tran t
WHERE t.trans_id = tsp.trans_id
AND tsp.timestamp BETWEEN '1-jan-2008' AND SYSDATE
AND t.business_process_id = 'ABC01'
次のようなデータを出力します。
trans_ID
business_process_id
status
timestamp
14444400
ABC01
F
6/5/2008 12:37:36 PM
14444400
ABC01
W
6/6/2008 1:37:36 PM
14444400
ABC01
S
6/7/2008 2:37:36 PM
14444400
ABC01
P
6/8/2008 3:37:36 PM
14444401
ABC01
F
6/5/2008 12:37:36 PM
14444401
ABC01
W
6/6/2008 1:37:36 PM
14444401
ABC01
S
6/7/2008 2:37:36 PM
14444401
ABC01
P
6/8/2008 3:37:36 PM
上記に加えて、一意のすべてのステータス W&F、S&W、P&S 間の時間差 (日数) を計算する列を追加したいと思いますtrans_id
。
アイデアは、トランザクションが最終的にステータス「P」に処理される前に、トランザクションがさまざまなステータスに留まっている時間を把握することです。トランザクションのライフ サイクルは、F -> W -> S -> P の順です。ここで、F は最初のステータス、P は最終ステータスです。
誰でも助けることができますか?前もって感謝します。