|
|
kaezorr
鐵驢友〔初級〕
小威
. 積分: 40
. 精華: 1
. 文章: 110
. 收花: 189 支
. 送花: 72 支
. 比例: 0.38
. 在線: 42 小時
. 瀏覽: 250 頁
. 註冊: 7266 天
. 失蹤: 5508 天
. AIDC |
|
|
|
|
|
|
#1 : 2006-1-10 02:42 PM
全部回覆
|
送花
(0)
送出中...
|
|
|
我的資料庫是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)
不過這方法還有個盲點,就是 進行時間 相同的兩件工作可能會導致錯誤的結果
這部分我就沒有測試了 ^^; 有興趣可以再修改
[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
|
|