Sql語法sum的問題 |
尚未結案
|
doll_candy
初階會員 發表:110 回覆:53 積分:32 註冊:2002-04-22 發送簡訊給我 |
請問各位大大:
我要得出如下答案:
人員,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 發送簡訊給我 |
引言: 請問各位大大: 我要得出如下答案: 人員,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 發送簡訊給我 |
|
doll_candy
初階會員 發表:110 回覆:53 積分:32 註冊:2002-04-22 發送簡訊給我 |
各位大大,之前我有些錯誤點
---------------------
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 發送簡訊給我 |
你還是沒說清楚你的問題 :
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 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 各位大大,之前我有些錯誤點 --------------------- 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 發送簡訊給我 |
|
doll_candy
初階會員 發表:110 回覆:53 積分:32 註冊:2002-04-22 發送簡訊給我 |
//---------------------
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 發送簡訊給我 |
引言: 第一:不知可使用否(金額* :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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 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 2400Select 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 發送簡訊給我 |
|
doll_candy
初階會員 發表:110 回覆:53 積分:32 註冊:2002-04-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |