Table欄位名稱相同但次數不相同,要如何把欄位名稱的次數相加,轉成另一Table? |
答題得分者是:P.D.
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] 請教各位前輩,關於Table 欄位名稱相同,但出現次數不同,要如何把欄位名稱的次數相加,轉成另一Table 現附上實際 Table 資料,請各位前輩幫忙介紹要用那種方式解決?謝謝! [/code] |
ANDY8C
資深會員 發表:114 回覆:582 積分:299 註冊:2006-10-29 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
謝謝 ANDY8C 的指導,小弟的需求是希望 LOTTEMP3 Table 的Kg49 號碼有重覆的出現次數要相加,再覆寫回LOTTEMP3 Table,或是另開新Table寫入,例如 23出現4次,底下又有一個23出現1次,因此就是 23x5 再覆寫回LOTTEMP3 Table,或是另開新Table寫入,※說明我LOTTEMP3 Table 的Kg49、Kgtime 的Type 都是 A 的型態,因此希望各位前備指導,要用什麼方式來完成,一個Table內的出現相同號碼次數相家再回寫,謝謝!
===================引 用 ANDY8C 文 章=================== 這題看了很多遍,還是看不懂您的需求 ? |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 K1086 文 章=================== 謝謝 ANDY8C 的指導,小弟的需求是希望 LOTTEMP3 Table 的Kg49 號碼有重覆的出現次數要相加,再覆寫回LOTTEMP3 Table,或是另開新Table寫入,例如 23出現4次,底下又有一個23出現1次,因此就是 23x5 再覆寫回LOTTEMP3 Table,或是另開新Table寫入,※說明我LOTTEMP3 Table 的Kg49、Kgtime 的Type 都是 A 的型態,因此希望各位前備指導,要用什麼方式來完成,一個Table內的出現相同號碼次數相家再回寫,謝謝! ===================引 用 ANDY8C 文 章=================== 這題看了很多遍,還是看不懂您的需求 ? 小弟用下列方式,請問各位前輩,有那種語法可以把相同 KG49 出現的次數(KGTIME) 相加再寫回? SELECT KG49 COUNT(*) KGTIME FROM LOTTEMP3 GROUP BY KG49 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] procedure TTotal_DBFm1.Button4Click(Sender: TObject); Var SQL:String; begin Query2.Close; Query2.SQL.Clear; Query2.SQL.ADD('Delete from LOTTEMP_A'); //先刪除暫存檔 Query2.ExecSQL; SQL:='select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from LOTTEMP3 group by YEAR, KG49'; Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有記錄資料...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KGTIME_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Query1.Next; end; Table3.Active := true; end; [/code] ※出現錯誤訊息:Invalid use of keyword token:YEAR 請問PD版主小弟程式在那出錯?請幫忙指導謝謝! ===================引 用 P.D. 文 章=================== 1. COUNT(*) 是算出總筆數, 按本例, 如果使用COUNT(*) 只會得到 2 2. 你的問題應該是要用SUM(KGTIME), 但問題是由於你的 KG49, KGTIME 都是 STRING 型態, SUM() 我不確定是否可正確的執行, 我測試理論上是可以的 select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from xxx group by YEAR, KG49 |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 K1086 文 章=================== [code delphi] procedure TTotal_DBFm1.Button4Click(Sender: TObject); Var SQL:String; begin Query2.Close; Query2.SQL.Clear; Query2.SQL.ADD('Delete from LOTTEMP_A'); //先刪除暫存檔 Query2.ExecSQL; SQL:='select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from LOTTEMP3 group by YEAR, KG49'; Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有記錄資料...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KG49').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KGTIME_A').AsString := Query1.FieldByName('KGTIEM').AsString; Table3.Post; Query1.Next; end; Table3.Active := true; end; [/code] ※出現錯誤訊息:Invalid use of keyword token:YEAR 請問PD版主小弟程式在那出錯?請幫忙指導謝謝! ===================引 用 P.D. 文 章=================== 1. COUNT(*) 是算出總筆數, 按本例, 如果使用COUNT(*) 只會得到 2 2. 你的問題應該是要用SUM(KGTIME), 但問題是由於你的 KG49, KGTIME 都是 STRING 型態, SUM() 我不確定是否可正確的執行, 我測試理論上是可以的 select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from xxx group by YEAR, KG49 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from LOTTEMP3 group by YEAR, KG49';
Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有記錄資料...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KG49').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KGTIME_A').AsString := Query1.FieldByName('KGTIEM').AsString; Table3.Post; Query1.Next; end; Table3.Active := true; end; [/code] ※出現錯誤訊息:Invalid use of keyword token:YEAR 請問PD版主小弟程式在那出錯?請幫忙指導謝謝!
編輯記錄
老大仔 重新編輯於 2015-07-21 08:04:00, 註解 無‧
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
===================引 用 老大仔 文 章=================== Type mismatch in expression (類型不匹配) 是否我的 kgtime 是文字型態宣告無法運算?? [code delphi] procedure TTotal_DBFm1.Button4Click(Sender: TObject); Var SQL:String; begin Query2.Close; Query2.SQL.Clear; Query2.SQL.ADD('Delete from LOTTEMP_A'); //先刪除暫存檔 Query2.ExecSQL; SQL:='select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from LOTTEMP3 group by YEAR, KG49'; Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有記錄資料...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KG49').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KGTIME_A').AsString := Query1.FieldByName('KGTIEM').AsString; Table3.Post; Query1.Next; end; Table3.Active := true; end; [/code] ※出現錯誤訊息:Invalid use of keyword token:YEAR 請問PD版主小弟程式在那出錯?請幫忙指導謝謝! |
tuga
高階會員 發表:16 回覆:109 積分:120 註冊:2002-07-13 發送簡訊給我 |
kgtime 是文字, 請用 cast 或是 convert 轉成數值後再 sum
統計的結果 不要與原欄位名稱重複 sum(KG49)*sum(KGTIME) as subtotal ===================引 用 K1086 文 章=================== ===================引 用 老大仔 文 章=================== Type mismatch in expression (類型不匹配) 是否我的 kgtime 是文字型態宣告無法運算?? [code delphi] procedure TTotal_DBFm1.Button4Click(Sender: TObject); Var SQL:String; begin Query2.Close; Query2.SQL.Clear; Query2.SQL.ADD('Delete from LOTTEMP_A'); //先刪除暫存檔 Query2.ExecSQL; SQL:='select YEAR, KG49, sum(KG49)*sum(KGTIME) as KGTIME from LOTTEMP3 group by YEAR, KG49'; Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有記錄資料...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KG49').AsString; Table3.Post; Table3.Append; Table3.FieldByName('KGTIME_A').AsString := Query1.FieldByName('KGTIEM').AsString; Table3.Post; Query1.Next; end; Table3.Active := true; end; [/code] ※出現錯誤訊息:Invalid use of keyword token:YEAR 請問PD版主小弟程式在那出錯?請幫忙指導謝謝! |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
[code delphi] procedure TTotal_DB_496Fm1.Button4Click(Sender: TObject); Var SQL,STDT,ENDT:String; begin Query2.Close; Query2.SQL.Clear; Query2.SQL.ADD('Delete from LOTTEMP_A'); //先刪除暫存檔 Query2.ExecSQL; SQL:='SELECT * FROM LOTTEMP3'; Query1.Close; Query1.SQL.Clear; Query1.SQL.ADD(SQL); Query1.Open; if Query1.RecordCount =0 Then SHOWMESSAGE('沒有開獎記錄...'); While NOT Query1.Eof do begin Table3.Append; Table3.FieldByName('KGITEM_A').AsString := Query1.FieldByName('KGITEM').AsString; Table3.FieldByName('KG49_A').AsString := Query1.FieldByName('KG49').AsString; Table3.FieldByName('KGTIME_A').AsString := IntToStr(Query1.FieldByName('KG49').AsInteger*Query1.FieldByName('KGTIME').AsInteger); Table3.Post; Query1.Next; end; Table3.Active := true; end; end. [/code] 謝謝 tuga 的指導 現在小弟修改程式之後,Run 的結果還是不正確,現附上新 Table 的結果圖檔,請各前輩指導要如何修正才會正確? ※程式執行要求說明: 新 Table 資料因該只會出現 01 .... 49 的出現次數一次而已,現在執行的不會歸類 所有 01 02 ... 49的次數依然還是各自寫入新的 Table 而且統計出現次數也錯誤 例如:原本 Lottemp3 有01x1 01x0 02x4 02x1 正確是合併統計後在 新的 Table 要變成 01x1 02x5 這樣才是我要的結果,但現在看到的還是會出現 二個01的 kg49 號碼,我只要出現一個01...49在新 Table 的kg49_a就好,麻煩請各前輩指導再看一下是要修改那一段程式館好嗎? _最傷腦筋是原 Lottemp3 Table 的kgtime 都是 A Type 無法改變。 |
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
|
K1086
初階會員 發表:63 回覆:148 積分:42 註冊:2007-04-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |