全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1381
推到 Plurk!
推到 Facebook!

請教這個SQL語句該怎樣寫?

答題得分者是:timhuang
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-29 09:57:38 IP:218.16.xxx.xxx 未訂閱
我寫的軟件中有這麼一個問題:人事表中有在職與離職(empl_act)這一個字段,離職表中則有離職時間(empl_outtime)字段,因為經常中離職表中添加數據時而那人尚未離職.請問如何寫SQL語句:當離職時間到了時(即大於當前時間),人事表中在職字段就自動變為離職?
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-29 10:41:43 IP:61.30.xxx.xxx 未訂閱
Hi danielldf 您好: 若只是單純的顯示資料, SQL Server可使用Case When End的方法 Select Case when 條件 then 結果 else 另一結果 end Oracle可用Decode 但你的結果應該回填至empl_act這個欄位, 這就需要寫個排程程式去更新了 Good Luck 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-29 11:30:11 IP:218.16.xxx.xxx 未訂閱
Miles,您好! 我用的sql server 2000,但對它不太熟悉,您能否寫得詳細一點,那條件該是取得系統日期與離職日期作比較,可怎樣寫呢?另外排程程序該怎樣寫?謝謝!
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-29 12:18:22 IP:61.155.xxx.xxx 未訂閱
对于类似这种情况,最好建立数据库触发器来自动调整!!!    关于触发器的使用可以参见帮助.我用的是DB2,我想SQL SERVER也是有这个功能的.    风花雪月 e梦情缘
------
风花雪月 e梦情缘
danielldf
一般會員


發表:44
回覆:60
積分:20
註冊:2003-05-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-29 13:50:07 IP:218.16.xxx.xxx 未訂閱
是的,我想觸發器可以很好完成這樣的功能可是不知道該怎樣寫?
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-29 14:11:57 IP:61.62.xxx.xxx 未訂閱
在 mssql 中寫一個 schedule task (也就是排程), 內容如下: update 人事表 set empl_act = '離職' from 人事表 a, 離職表 b where a.emp_id = b.emp_id and b.empl_outtime <= getdate() 排定每日凌晨 1:00 作業, 一天一次即可!! 新增 schedule task 可以利用 SQL Server Enterprise Manager 來進行比較容易, 使用的方式可以參考 mssql help 內有詳細的說明!
系統時間:2024-11-25 8:18:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!