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

SQL語法可以做到這點嗎??

尚未結案
alvin0921
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-07 10:44:16 IP:203.70.xxx.xxx 未訂閱
請問先進: 這是我的datebase:我使用的是MySQL ID - Name - merit 001 - 蘋果 - 20000 002 - 香蕉 - 300 003 - 芒果 - 150000 004 - 蘋果 - 500000 005 - 蓮霧 - 370000 006 - 香蕉 - 200 007 - 蓮霧 - 700000 請問有 sql 語法可將相同的水果先做加總再依數值做計算嗎?? 加總後 蘋果 - 520000 香蕉 - 500 芒果 - 150000 蓮霧 - 1070000 希望可以秀出 蘋果 - 52 萬 香蕉 - 500 元 芒果 - 15 萬 蓮露 - 1.07 百萬
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-07 11:13:24 IP:218.72.xxx.xxx 未訂閱
您好!我只会加总 SELECT name, SUM(merit) AS merit FROM table GROUP BY name
alvin0921
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-07 11:25:04 IP:203.70.xxx.xxx 未訂閱
luowy651 你好 我希望的是要加總後再依加總後的值來做處理
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-07 12:38:24 IP:218.72.xxx.xxx 未訂閱
不知这对你有否帮助: UPDATE table SET newmerit = CONVERT(varchar, merit * 0.000001) '百万元' WHERE (merit >= 1000000) UPDATE table SET newmerit = CONVERT(varchar, merit * 0.0001) '万元' WHERE (merit >= 10000 AND merit < 1000000) -------------- 抛砖引玉 -------------- 發表人 - luowy651 於 2004/05/07 12:43:05
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-07 12:55:16 IP:210.65.xxx.xxx 未訂閱
Hi alvin0921,    你可以先參考以下範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34738 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49031 MYSQL 中是否有 Storde Procedure 可用? 若有,仿上述兩篇文章,寫一個 function 然後用類似以下語法即可
SELECT  NAME,
        YOUR_FUNCTION_NAME(MERIT) AS MERIT    FROM   (SELECT NAME, SUM(MERIT) AS MERIT
        FROM TABLE
        GROUP BY NAME)
若無 Stored Procedure 可用,那就在 delphi 中,用 Calculated Field 來作 發表人 -
------
Fishman
alvin0921
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-07 16:25:23 IP:203.204.xxx.xxx 未訂閱
引言: Hi alvin0921, 你可以先參考以下範例 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=34738 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=49031 MYSQL 中是否有 Storde Procedure 可用? 若有,仿上述兩篇文章,寫一個 function 然後用類似以下語法即可 SELECT NAME, YOUR_FUNCTION_NAME(MERIT) AS MERIT FROM (SELECT NAME, SUM(MERIT) AS MERIT FROM TABLE GROUP BY NAME) 若無 Stored Procedure 可用,那就在 delphi 中,用 Calculated Field 來作 發表人 - Fishman 於 2004/05/07 12:58:15
請問 Calculated Field 應要怎麼運用才可達到此目的??
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-07 17:28:23 IP:210.65.xxx.xxx 未訂閱
Hi alvin0921,    1.在 DataSet 中,先 Double Click,再出現的框框中按下滑鼠右鍵,先選擇 Add All Fields,先將 select 的欄位加入(merit 的 Summary 也必須加入),再按下滑鼠右鍵選擇 New Field,給定欄位名稱,並指定 TYPE 為 String,Size 自行決定,重要的是 field Type 必須設為 Calculated, 2.DataSet 中設定 AutoCalcFields 為 True; 3.在 DataSet 的 OnCalcFields 事件中去乎將上述反例程式的 function(假設名稱為 ConvertFunction)
procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet);
begin
    DataSet.FieldByName('CalcFields').AsString := ConvertFunction(DataSet.FieldByName('merit').AsInteger);
end;
紅色字體部分自行修改,再試試看唄,Good Luck !! ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
alvin0921
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-16

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-07 17:42:21 IP:219.84.xxx.xxx 未訂閱
引言: Hi alvin0921, 1.在 DataSet 中,先 Double Click,再出現的框框中按下滑鼠右鍵,先選擇 Add All Fields,先將 select 的欄位加入(merit 的 Summary 也必須加入),再按下滑鼠右鍵選擇 New Field,給定欄位名稱,並指定 TYPE 為 String,Size 自行決定,重要的是 field Type 必須設為 Calculated, 2.DataSet 中設定 AutoCalcFields 為 True; 3.在 DataSet 的 OnCalcFields 事件中去乎將上述反例程式的 function(假設名稱為 ConvertFunction) procedure TForm1.ClientDataSet1CalcFields(DataSet: TDataSet); begin DataSet.FieldByName('CalcFields').AsString := ConvertFunction(DataSet.FieldByName('merit').AsInteger); end; 紅色字體部分自行修改,再試試看唄,Good Luck !! ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
但如此一來以sql查詢將會出現問題,因每次查詢所秀出的欄位數並不固定 sql是動態產生的
alvin0921
一般會員


發表:7
回覆:7
積分:2
註冊:2004-02-16

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-10 12:17:15 IP:203.204.xxx.xxx 未訂閱
感謝大家的回應,我已找到方法了,貼上來讓大家參考一下 SELECT IF(sum(merit)>10000,if(sum(merit/10000)>100,CONCAT(sum(merit/1000000),'百萬'),CONCAT(sum(merit/10000),'萬元')),CONCAT(sum(merit),' 元') as newmerit FROM TABLE GROUP BY NAME
系統時間:2024-05-16 14:50:44
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!