迴圈及sql |
尚未結案
|
jacosun
一般會員 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
假設我要分別列出各月的的總金額(那幾個月不一定)
我用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 發送簡訊給我 |
其實你可以這樣寫
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 發送簡訊給我 |
引言: 其實你可以這樣寫 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 發送簡訊給我 |
|
jacosun
一般會員 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
|
pprayer
高階會員 發表:35 回覆:185 積分:174 註冊:2002-03-13 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
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 發送簡訊給我 |
|
jacosun
一般會員 發表:42 回覆:64 積分:21 註冊:2003-04-18 發送簡訊給我 |
引言: 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 發送簡訊給我 |
引言:引言: 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 發送簡訊給我 |
引言:引言: 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
------
天行健 君子當自強不息~~@.@ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |