線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1007
推到 Plurk!
推到 Facebook!

paradox 用 sql command 開啟,可否用類似 if or case

尚未結案
csc
一般會員


發表:5
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-03 14:23:13 IP:211.20.xxx.xxx 未訂閱
請教各位先進 select sum(a),sum(b*var) from table 其中 var 的值取決於另一欄位"c" 如果 c=true :var=1 反之 c=false :var=-1 請問該用什麼函數或語法 資料庫為 paradox 謝謝
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-03 16:44:51 IP:211.78.xxx.xxx 未訂閱
引言: 請教各位先進 select sum(a),sum(b*var) from table 其中 var 的值取決於另一欄位"c" 如果 c=true :var=1 反之 c=false :var=-1 請問該用什麼函數或語法 資料庫為 paradox 謝謝
1.praradox 是 local database, 不支援 SQL中的 if .. as 用法 你必須在 fieldEditor 中建立一個 CalcField , mysumVar if c=true then query1mysumVar.Value:= query1b.Value * 1 else query1mysumVar.Value:= query1b.Value * -1 2.得使用 TQuery 來做 3.直接引用 mysumVar的SQL語法 select mysumVar from table......
csc
一般會員


發表:5
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-04 12:23:49 IP:211.20.xxx.xxx 未訂閱
請教前輩 不是很懂您的意思 是不是說 1.先用query1開啟,需新增一計算欄位,計算var的值 2.再用query2加總query1.var的值 如有錯誤,請加以指導,謝謝
arvinhsu
一般會員


發表:0
回覆:10
積分:7
註冊:2003-04-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-04 17:04:00 IP:211.76.xxx.xxx 未訂閱
select sum(a), sum(b * (Case C When True Then 1 Else 0 End)) from table 這樣應該就可以了...
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-04 19:34:43 IP:61.66.xxx.xxx 未訂閱
引言: 請教前輩 不是很懂您的意思 是不是說 1.先用query1開啟,需新增一計算欄位,計算var的值 2.再用query2加總query1.var的值 如有錯誤,請加以指導,謝謝
誤會了, 只有一個query1 1.query1進入FieldEditor狀態(你應該知道吧), 新增一個calcfield 2.在query1的 onCalcFields Event 中寫(舉例欄位 mysumField query1mysumField.value:= 你的條件運算式 如果有if判斷則 if xxxx then query1mysumField.value:= .... * 1 else query1mysumField.value:= ..... * -1; 3.在 query1的 sql中直接select 這個欄位 select sum(mysumField) ..... 如此不知明瞭否!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-04 19:37:24 IP:61.66.xxx.xxx 未訂閱
引言: select sum(a), sum(b * (Case C When True Then 1 Else 0 End)) from table 這樣應該就可以了...
對不起哦! 這個做法在 paradox db檔上確實可以嗎? 我實作不過耶! 是否有完整的實例可以參考, 我蠻想知道的! 據我操作經驗, InterBase好像也不接受這種做法哦! ~~~真理總在辯論中出現, 不要在意
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-05 10:42:46 IP:61.64.xxx.xxx 未訂閱
有關 Paradox 支援哪些 SQL command,請參閱 Local SQL Guide 在 Program Files\Common Files\Borland Shared\BDE\localsql.hlp 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
csc
一般會員


發表:5
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-07 13:53:55 IP:211.20.xxx.xxx 未訂閱
感謝P.D.前輩 我懂您的意思了 只是我有另一個問題 我的 query1.sql.text 如下 select cust,sum(qty),sum(amt) from table group by cust amt 為新增之計算欄位 在 onCalcFields Event if query1qty.value>0 then query1amt.value:=query1price.value else query1amt.value:=query1price.value*-1 因此 query1.sql.text 需改為 select cust,qty,price,sum(qty),sum(amt) from table group by cust,qty,price 如此一來就無法依 cust 來加總了 不知前輩是否了解我的意思 可有辦法解決,再一次謝謝您 也謝謝 arvinhsu 兄 paradox 似乎不支援 case 也謝謝sryang 兄 delphi 5 時,在 help 裡就有了 以為 delphi 7 沒有了 原來是放到那去了
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-07 16:16:32 IP:211.78.xxx.xxx 未訂閱
我瞭解你的意思! select cust,qty,price from ... 這是屬於 simple SQL語法 select sum(qty),sum(amt) from table 這是 complex SQL , 依SQL結構來說, 如果 select 中有 simple, complex的組合, 必須以 simple的欄位做group by, 依你的需求cust,qty,price為group by 如果你只要以cust這樣執行, 按我目前對sql所能認知的階段那只能 select cust, sum(qty), sum(amt) from ....group by cust囉! 因為你下了sum的語法, 目的就是要取得sum()結果值, 所以cust就成為 sum()的key值, 如果你如下 select sum(qty), sum(amt) from ... 則你只會取到一筆值->全部的總和 換句話說, 當有simplex語法, 其 simple結構中的欄位是為一個key值範圍的 參考數據, 而不是我們所想像select cust, emp 的那樣用法! 發表人 - P.D. 於 2003/07/07 16:21:58
csc
一般會員


發表:5
回覆:12
積分:3
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-07-08 10:55:44 IP:211.20.xxx.xxx 未訂閱
我瞭解了 謝謝 P.D.前輩
系統時間:2024-05-18 23:09:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!