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

迴圈及sql

尚未結案
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-28 15:22:00 IP:211.74.xxx.xxx 未訂閱
假設我要分別列出各月的的總金額(那幾個月不一定) 我用for來做迴圈控制 用tquery來做搜尋的動作這樣行嗎 第一、for 是用變數且要數值型態來做迴圈 但是在tquery 用變數的話要轉字串 這樣兩個好像加不起來耶.....程式碼如下: F:=edit1.text; l:=edit2.text; for i:=f to l do begin Query1.sql.text= 'select shop,sum(M1) from closeAmonut.db ' 'where closedate like '???%' 'group by shop 拍謝??那部分我不會寫 @@! f是4,l是6 我要分別列出4月、五月、六月的總金額 試問這個要怎麼寫、還有在DBgird要怎麼顯示四月五月 我記得之前他都是欄位名稱顯示為shop、sum(M1)這樣的 再次麻煩各位大大了... ##玩程式或是被程式玩呢... 發表人 - jacosun 於 2003/04/28 15:24:21
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-28 15:44:52 IP:61.220.xxx.xxx 未訂閱
其實你可以這樣寫 Query1.sql.add ('select shop,sum(M1) from closeAmonut.db '); Query1.sql.add (' where closedate >=''' edit1.text ''' and closedate <=''' edit2.text ''' group by shop '); 不用寫迴圈 2:要顯示則用ongettext 事件 在 query-->右鍵-->field editor --> 點選欄位 -->選events頁次 --> ongettext 舉例 if //判斷條件 then text := '四月' else text:= '五月'; ps:不過你要注意日期型態的問題 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/28 15:51:44 發表人 - T.J.B 於 2003/04/28 15:54:15
------
天行健
君子當自強不息~~@.@
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-28 15:53:54 IP:211.74.xxx.xxx 未訂閱
引言: 其實你可以這樣寫 Query1.sql.add ('select shop,sum(M1) from closeAmonut.db '); Query1.sql.add (' where closedate >=''' edit1.text ''' and closedate <=''' edit2.text ''' group by shop '); 不用寫迴圈 天行健 君子當自強不息~~@.@
抱謝可能我說的不夠明白..我的資料庫裡的檔案是以每日為一筆 以大大的寫法只能從這天到那天來做統計,我要的分別把當月加總後秀出 每月的總金額.. 所以我才想說用迴圈控制,例如4~5 用SQL去找出4%然後加總、5%然後加總 再秀出四月的多少、五月的多少.... 這樣子...會不會很難懂丫
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-28 16:04:53 IP:61.220.xxx.xxx 未訂閱
了解 那請問你的closedate欄位的資料是存成何種資料 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-28 16:11:38 IP:211.74.xxx.xxx 未訂閱
引言: 了解 那請問你的closedate欄位的資料是存成何種資料 天行健 君子當自強不息~~@.@
DATE型態的 資料庫paradox格式的
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-28 16:17:55 IP:211.75.xxx.xxx 未訂閱
SQL SERVER 有Month(string)和DatePart(mm,Date)函式可以用 不知道paradox有沒有類似的 發表人 - pprayer 於 2003/04/28 16:19:22
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-28 16:37:39 IP:61.220.xxx.xxx 未訂閱
HI : 你用的資料庫我並不熟 不過我可以跟你說 怎麼做 首先你要把CLOSEDATE轉成字串型態 然後用擷取字串的含式去取出只包含年月或月的日期(看你的資料而定) 最後對此日期做GROUP BY 即可把每天的資料依照月份作加總 下面是ORACLE的SQL 它是可執行的 它的GUIDATE同樣式日期型態 它的資料是 EXP: 2003/05/02 你可以參考一下 select SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) ,sum(taxsale) from erp_gui WHERE GUIDATE >= TO_DATE('2002/04','YYYY/MM') AND GUIDATE <= TO_DATE('2002/06','YYYY/MM') group by SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/28 17:04:19
------
天行健
君子當自強不息~~@.@
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-29 10:23:26 IP:61.59.xxx.xxx 未訂閱
引言: SQL SERVER 有Month(string)和DatePart(mm,Date)函式可以用 不知道paradox有沒有類似的 發表人 - pprayer 於 2003/04/28 16:19:22
不好意思..能否寫個例子讓我參考呢???
jacosun
一般會員


發表:42
回覆:64
積分:21
註冊:2003-04-18

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-29 10:34:23 IP:61.59.xxx.xxx 未訂閱
引言: HI : 你用的資料庫我並不熟 不過我可以跟你說 怎麼做 首先你要把CLOSEDATE轉成字串型態 然後用擷取字串的含式去取出只包含年月或月的日期(看你的資料而定) 最後對此日期做GROUP BY 即可把每天的資料依照月份作加總 下面是ORACLE的SQL 它是可執行的 它的GUIDATE同樣式日期型態 它的資料是 EXP: 2003/05/02 你可以參考一下 select SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) ,sum(taxsale) from erp_gui WHERE GUIDATE >= TO_DATE('2002/04','YYYY/MM') AND GUIDATE <= TO_DATE('2002/06','YYYY/MM') group by SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/28 17:04:19
請問大大...Group by 一次只能做針對一個做群組嗎??還是可以設兩個以上呢? 因為我要依三種資料來做分析,如客戶;時間、金額。 而我的時間、金額是要以變數來做設定 不單單只對固定時段、固定金額來做統計....這樣子有辦法做到嗎?? 我的頭好痛...因為我只能做到區間的分析卻不能做到以每月每月來分析.... 是可以把區間設成一個月後來做分析,但若三個月的話我就要執行三次、列印三次...是否有合併之法呢??
pprayer
高階會員


發表:35
回覆:185
積分:174
註冊:2002-03-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-29 14:57:48 IP:211.75.xxx.xxx 未訂閱
引言:
引言: SQL SERVER 有Month(string)和DatePart(mm,Date)函式可以用 不知道paradox有沒有類似的 發表人 - pprayer 於 2003/04/28 16:19:22
不好意思..能否寫個例子讓我參考呢??? < face="Verdana, Arial, Helvetica"> Select Month(日期) as 月,sum(金額) From tbl Where Year(日期) = 2003 --假設你只要去今年各月份的 Group By Month(日期) --依各月總計金額 上面這一段我在SQL SERVER上是可以跑出結果的,您參考看看
T.J.B
版主


發表:29
回覆:532
積分:497
註冊:2002-08-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-29 16:57:21 IP:61.220.xxx.xxx 未訂閱
引言:
引言: HI : 你用的資料庫我並不熟 不過我可以跟你說 怎麼做 首先你要把CLOSEDATE轉成字串型態 然後用擷取字串的含式去取出只包含年月或月的日期(看你的資料而定) 最後對此日期做GROUP BY 即可把每天的資料依照月份作加總 下面是ORACLE的SQL 它是可執行的 它的GUIDATE同樣式日期型態 它的資料是 EXP: 2003/05/02 你可以參考一下 select SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) ,sum(taxsale) from erp_gui WHERE GUIDATE >= TO_DATE('2002/04','YYYY/MM') AND GUIDATE <= TO_DATE('2002/06','YYYY/MM') group by SUBSTR((TO_CHAR(GUIDATE,'YYYY/MM/DD')),1,7) 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/28 17:04:19
請問大大...Group by 一次只能做針對一個做群組嗎??還是可以設兩個以上呢? 因為我要依三種資料來做分析,如客戶;時間、金額。 而我的時間、金額是要以變數來做設定 不單單只對固定時段、固定金額來做統計....這樣子有辦法做到嗎?? 我的頭好痛...因為我只能做到區間的分析卻不能做到以每月每月來分析.... 是可以把區間設成一個月後來做分析,但若三個月的話我就要執行三次、列印三次...是否有合併之法呢?? < face="Verdana, Arial, Helvetica"> 當然可以ㄚ 我給你的例子 就是以時間當變數 (假設你會SQL的變數寫法) 也就是紅色部分你只要把它換成你要的變數名稱即可 不過你要注意的是 你是用edit1及edit2來輸入時間 但你的欄位是DateType 所以edit1及edit2要轉成日期型態 WHERE GUIDATE >= TO_DATE('2002/04','YYYY/MM') AND GUIDATE <= TO_DATE('2002/06','YYYY/MM') 如果要多增加金額變數 就再加要select的條件 GROUP BY 是可以一次針對多個欄位作群組 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/29 16:59:25
------
天行健
君子當自強不息~~@.@
系統時間:2024-06-30 6:32:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!