我的資料庫是Oracle
概略跑一下結果有出來
不知道是不是你要的
1.Oracle有virtual column虛擬欄位ROWNUM這個可以用
2.我用case when ... else ... end
3.我是用單行子查詢把流程時間算出來的,要像你說的那樣可能要寫成StoredProcedure比較容易一些
以下是我的SQL沒有什麼修飾就po上來,包含一下囉~
/* Formatted on 2006/01/10 14:26 (Formatter Plus v4.8.5) */
SELECT tmp_id, task_name, proc_time, sche_time, exp_time,
CASE
WHEN exp_time - sche_time >= 0
THEN 0
ELSE sche_time - exp_time
END AS suff_time
FROM (SELECT tmp_id, task_name, proc_time,
(SELECT SUM (proc_time)
FROM task
WHERE proc_time <= v.proc_time) sche_time, exp_time
FROM (SELECT ROWNUM tmp_id, task_name, proc_time, exp_time
FROM (SELECT task_name, proc_time, exp_time
FROM task
ORDER BY proc_time)) v)