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

請問SQL語法 有關SUM的用法

答題得分者是:folkchen
XrayWang
一般會員


發表:3
回覆:5
積分:1
註冊:2003-12-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-07-29 11:34:15 IP:211.75.xxx.xxx 未訂閱
請問一下~ 如果我有以下資料: 欄位名: NAME MONEY DATE 資料: AAA 100 20040701 BBB 200 20040701 DDD 800 20040701 DDD 300 20040701 AAA 200 20040701 BBB 400 20040701 CCC 400 20040702 EEE 300 20040702 CCC 500 20040702 今天我希望查詢某一天每個人(人名要排序)的money總合, 但是當天可能某幾個人沒資料(如上面20040701當天DDD和EEE並沒有資料), 例如20040701要列出: NAME SUM(MONEY) DATE AAA 300 20040701 BBB 600 20040701 CCC 0 20040701 DDD 1100 20040701 EEE 0 20040701 假若用Select NAME, SUM(MONEY) From TABLE Where DATE='20040701' Group by NAME Order By Name的話 只會出現AAA, BBB, DDD三者, 不知道怎麼讓出來的結果有A~E五組呢? 蠻急的..不行的話我只好用雙層迴圈對每個名字每個時間查總合了...謝謝各位囉!! 發表人 - XrayWang 於 2004/07/29 11:56:29
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-07-29 12:07:18 IP:211.20.xxx.xxx 未訂閱
請參考 http://delphi.ktop.com.tw/topic.php?topic_id=37748
XrayWang
一般會員


發表:3
回覆:5
積分:1
註冊:2003-12-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-07-29 13:45:53 IP:211.75.xxx.xxx 未訂閱
對不起, 還是不太了解耶~ 我只有一個table唷 而我試著用left outer join..並無法查出我所要的 不知道可否再清楚點解釋呢? 謝謝!!
folkchen
高階會員


發表:9
回覆:232
積分:173
註冊:2003-10-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-07-29 14:55:34 IP:211.20.xxx.xxx 未訂閱
Sorry~~ 我會錯意 以下SQL中的3個 20040701 你用變數串進SQL中就可以了 SELECT NAME, Sum(MONEY) AS Expr1, DATE1 FROM TT WHERE DATE1='20040701' GROUP BY NAME, DATE1 union SELECT NAME, 0 AS Expr1, '20040701' as DATE1 FROM TT WHERE DATE1<>'20040701' GROUP BY NAME, DATE1 ORDER BY NAME;
XrayWang
一般會員


發表:3
回覆:5
積分:1
註冊:2003-12-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-07-29 15:44:51 IP:211.75.xxx.xxx 未訂閱
謝謝妳的大力幫忙呢~ 不過我發現還是有問題唷~ 假若20040701的資料多了一筆 CCC  200 20040701 (對不起,也算是我沒有講清楚) 您的方法出來應該會像是 AAA 300 20040701 BBB 600 20040701 CCC 0 20040701  --->此筆資料不該出現 CCC 200 20040701 DDD 1100 20040701 EEE 0 20040701 因為原本 select date='20040701'的部分會找到CCC 200 20040701 而在被union的部份WHERE DATE1<>'20040701'會找到CCC 0 20040701 兩個union起來就多出了後來這筆資料囉~~    不過...由於妳的提示, 我剛剛用各種組合試了一下left join 和 right join 發現了right outer join可以找到資料囉:) 發現可以這樣解唷: Select distinct NAME,sum(MONEY) from myTABLE as A RIGHT OUTER JOIN myTABLE as B On DATE = '20040701' and A.NAME = B.NAME and A.MONEY = B.MONEY    --->這行也得加進去才行,其實不太了解為什麼 group by B.NAME 這樣就可以囉 謝謝囉:)
系統時間:2024-05-04 23:14:57
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!