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

Sql語法sum的問題

尚未結案
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-12 12:04:16 IP:61.218.xxx.xxx 未訂閱
請問各位大大: 我要得出如下答案: 人員,sum(金額*匯率) TOTAL group by 人員    資料庫內容 公司 人員 金額 匯率 ---------------------- A 小小 100 5 B XX 200 3 B 小小 500 8 A XX 300 6 B 小小 300 8 A XX 300 5    我要如何將 小小及XX在A,B公司的個人Total求出    做出 人員 TOTAL ----------- 小小 6900 XX 3900    拜託各位,請幫我看看    
------
doll_candy
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-12 12:11:05 IP:211.21.xxx.xxx 未訂閱
引言: 請問各位大大: 我要得出如下答案: 人員,sum(金額*匯率) TOTAL group by 人員 資料庫內容 公司 人員 金額 匯率 ---------------------- A 小小 100 5 B XX 200 3 B 小小 500 8 A XX 300 6 B 小小 300 8 A XX 300 5 我要如何將 小小及XX在A,B公司的個人Total求出 做出 人員 TOTAL ----------- 小小 6900 XX 3900 拜託各位,請幫我看看 >< face="Verdana, Arial, Helvetica"> 您一開頭就已經將答案寫下來了,如下: Select 人員,sum(金額*匯率) TOTAL From TableName Group By 人員 這樣應該就可以了 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-12 12:55:44 IP:61.221.xxx.xxx 未訂閱
Select 人員,sum(金額*匯率) as TOTAL From TableName Group By 人員 試試看 ======================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-12 13:12:57 IP:61.218.xxx.xxx 未訂閱
各位大大,之前我有些錯誤點 --------------------- Select 人員,sum(金額*匯率) TOTAL From TableName Group By 人員 --------------------- 我少寫了一個步驟 就是匯率並不在TABLE 而是由依據公司輸入 所以這是我的問題點 例:A公司匯率 5 B公司匯率 4 //--------------------------------- 資料庫內容 公司 人員 金額 匯率 ---------------------- A 小小 100 5 B XX 200 3 B 小小 500 8 A XX 300 6 B 小小 300 8 A XX 300 5    我要如何將 小小及XX在A,B公司的個人Total求出    做出 人員 TOTAL ----------- 小小 4000 XX 3500 //-------------------------- 敬請見諒 < >< > doll_candy
------
doll_candy
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-12 13:22:15 IP:218.16.xxx.xxx 未訂閱
你還是沒說清楚你的問題 : 1. 你既說 就是匯率並不在TABLE 卻又說 : 資料庫內容 公司 人員 金額 匯率 ---------------------- A 小小 100 5 B XX 200 3 B 小小 500 8 A XX 300 6 B 小小 300 8 A XX 300 5 2. 你既說 而是由依據公司輸入 例:A公司匯率 5 B公司匯率 4 但資料庫內容裡同人同公司又匯率不同 你的資料互相矛盾,別人甚幫你呢? 到底匯率是放在另一個 Table (若是的話請列出格式) 還是使用者即時輸入的 ?
timhuang
尊榮會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-12 13:23:33 IP:211.76.xxx.xxx 未訂閱
那就配合 case 的語法: Select 人員, sum(金額* (case when 公司 case 'A' then 5 case 'B' then 4 end)) From table Group by 人員
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-12 13:24:41 IP:211.21.xxx.xxx 未訂閱
引言: 各位大大,之前我有些錯誤點 --------------------- Select 人員,sum(金額*匯率) TOTAL From TableName Group By 人員 --------------------- 我少寫了一個步驟 就是匯率並不在TABLE 而是由依據公司輸入 所以這是我的問題點 例:A公司匯率 5 B公司匯率 4 //--------------------------------- 資料庫內容 公司 人員 金額 匯率 ---------------------- A 小小 100 5 B XX 200 3 B 小小 500 8 A XX 300 6 B 小小 300 8 A XX 300 5 我要如何將 小小及XX在A,B公司的個人Total求出 做出 人員 TOTAL ----------- 小小 4000 XX 3500 //-------------------------- 敬請見諒 < >< > doll_candy
您沒有提供Table的名稱,所有假設您有一個銷售檔就是(公司、人員、金額)及匯率檔(公司、匯率) Select a.人員,sum(a.金額*b.匯率) TOTAL From 銷售檔 a,匯率檔 b Where a.公司 = b.公司 Group By a.人員 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
wnhoo
高階會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-12 13:51:35 IP:61.155.xxx.xxx 未訂閱
我认为: 你是想说,从Table中统计出每个人在A、B公司(汇率分别在5、4)时候的金额    select 人員,sum(金額*匯率) as mytotal  form tablename where (公司='A' and 匯率=5) or (公司='B' and 匯率=4) group by 人員    风花雪月 e梦情缘
------
风花雪月 e梦情缘
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-12 14:23:43 IP:61.218.xxx.xxx 未訂閱
//--------------------- case when 公司 case 'A' then 5 case 'B' then 4 end //------------------------ Select 人員,sum(金額* :exRate) 但我忘了 如何使用 CASE '字串'  OF 大意如下: CASE Qry.fieldbyname('公司').asstring of A: Qry.ParamByName('exRate').asInteger :=5; . . . else; B: Qry.ParamByName('exRate').asInteger :=4; end;    第一:不知可使用否(金額* :exRate) 第二:CASE Qry.fieldbyname('公司').asstring of 程式run的時後就focuse在這,且出現錯誤訊息Ordinal type required
------
doll_candy
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-05-12 14:46:04 IP:211.21.xxx.xxx 未訂閱
引言: 第一:不知可使用否(金額* :exRate)
當然可以,我試過沒有問題
引言: 第二:CASE Qry.fieldbyname('公司').asstring of 程式run的時後就focuse在這,且出現錯誤訊息Ordinal type required
CASE Qry.fieldbyname('公司').asstring[1] of
  A: Qry.ParamByName('exRate').asInteger :=5;
  B: Qry.ParamByName('exRate').asInteger :=4;
end;
case後面僅仍使用字元及數值判斷,字串無法判斷,故在字串後加上[1]即可 ~小弟淺見,參考看看~ 發表人 - channel 於 2003/05/12 14:49:34
------
~小弟淺見,參考看看~
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-05-12 16:23:41 IP:61.218.xxx.xxx 未訂閱
1.首先Table應修正成如此 資料庫內容 公司 人員 金額 ---------------- A 小小 100 B XX 200 B 小小 500 A XX 300 B 小小 300 A XX 300 =================    2.focuse在次行,即下行   A: Qry.ParamByName('exRate').asInteger :=5;      錯誤訊息: Incompatible types:'Char' and 'String'    3.focuse在次行,即下行   'A': Qry.ParamByName('exRate').asInteger :=5;   錯誤訊息: Undeclared identifier:'A'    所以CASE的方法似乎困難重重 對字串而言.    所以我想可能要用其他方式: 1.陣列 2.IF方式 3.新加一 Table(company,dMonth,eRate),因我還要依據月份    這只是我的想法    
------
doll_candy
wnhoo
高階會員


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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-05-12 16:54:17 IP:61.155.xxx.xxx 未訂閱
select 人員,case when 公司='A' THEN 5 WHEN 公司='B' THEN 4 END AS HL, sum(金額*HL) as mytotal  form tablename group by 人員    或    select 人員,sum(金額*(case when 公司='A' THEN 5 WHEN 公司='B' THEN 4 END )) as mytotal  form tablename group by 人員        风花雪月 e梦情缘
------
风花雪月 e梦情缘
timhuang
尊榮會員


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-05-12 16:58:44 IP:211.76.xxx.xxx 未訂閱
修改一下. 在 mssql 中可以使用如下語法: Select 人員, sum(金額* (case 公司 when 'A' then 5 when 'B' then 4 end)) From table Group by 人員
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-05-12 18:30:54 IP:211.21.xxx.xxx 未訂閱
引言: 1.首先Table應修正成如此 資料庫內容 公司 人員 金額 ---------------- A 小小 100 B XX 200 B 小小 500 A XX 300 B 小小 300 A XX 300 ================= 2.focuse在次行,即下行 A: Qry.ParamByName('exRate').asInteger :=5; 錯誤訊息: Incompatible types:'Char' and 'String' 3.focuse在次行,即下行 'A': Qry.ParamByName('exRate').asInteger :=5; 錯誤訊息: Undeclared identifier:'A' 所以CASE的方法似乎困難重重 對字串而言. 所以我想可能要用其他方式: 1.陣列 2.IF方式 3.新加一 Table(company,dMonth,eRate),因我還要依據月份 這只是我的想法 >< face="Verdana, Arial, Helvetica"> Oh!My God!您的問題真是千變萬化,一下子問這個,一下子問那個,吃這個也癢,吃那個也癢,開一下玩笑 總結一下您問的問題: < class="code"> Table1: 公司 人員 金額 ---------------- A 小小 100 B XX 200 B 小小 500 A XX 300 B 小小 300 A XX 300 =================
Table2:
公司  月份   匯率
----------------
A      1    5
B      1    4
A      2    4
B      2    3
即然您的Table2有月份,那您的Table1也應該要有月份才對,所以將Table1改為:
公司 人員 金額   月份
-----------------------
A  小小 100    1
B  XX 200    1
B  小小 500    1
A  XX 300    2
B  小小 300    2 
A  XX 300    2
=======================
那您要求出的應該如下:
人員    月份    Total
---------------------
小小     1     2500
XX     1      800
小小     2      900
XX     2     2400
Select T1.人員,T1.月份,Sum(T1.金額*T2.匯率) Total From Table1 T1, Table T2 Where T1.公司=T2.公司 and T1.月份 = T2.月份 Group By T1.人員,T1.月份 這樣就可以了,不知是不是您要的。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-05-12 19:10:12 IP:218.16.xxx.xxx 未訂閱
引言: Oh!My God!您的問題真是千變萬化,一下子問這個,一下子問那個,吃這個也癢,吃那個也癢,開一下玩笑 總結一下您問的問題: < face="Verdana, Arial, Helvetica"> 所以我才叫他列清楚 匯率到底是甚樣來的,不過好像大家比較喜歡玩猜的,那便猜猜好了
doll_candy
初階會員


發表:110
回覆:53
積分:32
註冊:2002-04-22

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-05-13 12:06:14 IP:61.218.xxx.xxx 未訂閱
感謝各位 ,小女子我已完成了整個程式 1.首先先建個TABLE 2.然後LINK    也就是依照 channel 的方式  所以太棒了      謝謝    < >< > doll_candy
------
doll_candy
系統時間:2024-05-19 22:31:27
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!