Board logo

主題: [求助] [求助]請高手教我SQL語法問題 [打印本頁]

發表人: d22977    時間: 2005-12-25 01:56 AM     主題: [求助]請高手教我SQL語法問題

因為貼出來會亂
所以用WORD附件 @@
高手 高手 幫幫忙吧


我想問的問題有
1.        如果我想要每一次的排序都是 1 2 3 4 5那樣下去的排,資料表OR程式該怎麼設定呢~? 因為我用自動編號的話,如果排序跟現在的結果不一樣,排序的號碼會亂掉說 = =
2.        請問當工作A的到期時間-流程時間 > 0 的時候如何讓他顯示0呢?
3.        請問將工作A的流程時間 + 工作C的進行時間呢? 30+60 = 90 請問再SQL要怎麼寫呢?


請高手幫幫忙吧>”<  送花100朵  最後祝大家耶誕愉快 PU

[d22977 在 2005-12-25 10:49 AM 作了最後編輯]

附件: WORK.doc (2005-12-25 01:56 AM, 49.5 K) / 該附件被下載次數 13
http://twed2k.org/attachment.php?aid=20549
發表人: orlando    時間: 2005-12-25 05:04 AM

可否先給份完整題目要求一看。
你給的資料好像
題目和計算方法。何計算結果這三張表
什麽關聯嗎。怎麽看不出來@@。
發表人: kaezorr    時間: 2006-1-10 02:42 PM

我的資料庫是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)

不過這方法還有個盲點,就是 進行時間 相同的兩件工作可能會導致錯誤的結果
這部分我就沒有測試了 ^^; 有興趣可以再修改
發表人: kaezorr    時間: 2006-1-10 02:49 PM

資料表名稱 :
TASK

資料表內的欄位 :
TASK_NAME (工作:A...B...C...)
PROC_TIME (工作進行時間)
EXP_TIME (到期時間)

其他的欄位別名 :
SCHE_TIME (流程時間)
SUFF_TIME (餘裕時間)

資料庫內的資料:
點擊查看全圖

SQL執行結果:
點擊查看全圖

[kaezorr 在 2006-1-10 03:01 PM 作了最後編輯]
發表人: innova    時間: 2006-1-12 11:14 AM

也許請 樓主 先說明一下 使用的是哪一套資料庫先吧?

如果是使用 MS-Access 當資料庫...  @@"
那~ 上面兩位大大 辛苦半天  只是白作工了... ~_~'

如果是 Access, 應該可以透過 巨集 玩上面的東西
做到 類似的效果...




歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0