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

日期判斷的方法...

尚未結案
jacosun
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-23 13:01:26 IP:61.59.xxx.xxx 未訂閱
我有一個資料庫(order.db)欄位 user(型態a,長度不限)、o_date(型態d,長度不限)、money(型態n、長度不限) 資料表如下: user O_date money j 2003/4/1 100 j 2003/4/2 150 ~ j 2003/4/30 110 k 2003/4/1 120 . ~ . k 2003/4/31 130 j 2003/5/1 120 . ~ . j 2003/5/31 180 小弟我要怎麼能才做出user j、k各在四月分總共採購多少?五月採購多少? 如果寫 Query.sql.add(' select sum(money) from order.db '); Query.sql.add(' where o_date >= 2003/4/1 and o_date <=2003/4/30 '); Query.open; 這樣只能把4/1~4/30號的money總加起來,不能分是誰的?? 請問我要怎麼寫才能分出誰在幾月份的money是多少呢?? 再此先謝謝各位大大了...
T.J.B
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-23 13:16:39 IP:61.220.xxx.xxx 未訂閱
參考一下 Query.sql.add(' select sum(money),user,o_date from order.db '); Query.sql.add(' group by user,o_date '); Query.sql.add(' having o_date >= 2003/4/1 and o_date <=2003/4/30 '); Query.open; 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
jacosun
一般會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-23 14:13:44 IP:61.59.xxx.xxx 未訂閱
引言: 參考一下 Query.sql.add(' select sum(money),user,o_date from order.db '); Query.sql.add(' group by user,o_date '); Query.sql.add(' having o_date >= 2003/4/1 and o_date <=2003/4/30 '); Query.open; 天行健 君子當自強不息~~@.@
group by <== 請問這是什麼意思?? 當我Query.sql.add(' select money,user,o_date from order.db '); Query.sql.add(' where o_date >=2003/4/1 and o_date <=2003/4/31'); Query.open 這樣資料可以查詢得出來,但是我修改成大大的程式,我的卻出現個錯誤訊息 "capaility not supported" 請問是那出了錯丫?? 拍謝..因為是程式新手也剛在學delphi 所以會有很多問題 請多包含..
T.J.B
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-23 14:16:54 IP:61.220.xxx.xxx 未訂閱
1:group by 是做群組的意思 2:意思是你的資料庫不支援這個語法 你是用什麼資料庫的 3:如果不支援語法的話 就用Justmate 版主的方法 先把符合日期區間的資料 select 出來 再針對user做群組統計 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/23 14:21:14 發表人 - T.J.B 於 2003/04/23 14:38:30
------
天行健
君子當自強不息~~@.@
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-23 14:25:06 IP:218.16.xxx.xxx 未訂閱
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= 2003/4/1 and o_date <=2003/4/30 '  
                  ' group by user';
Query.Active := true;
jacosun
一般會員


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-23 15:07:27 IP:61.59.xxx.xxx 未訂閱
引言: 1:group by 是做群組的意思 2:意思是你的資料庫不支援這個語法 你是用什麼資料庫的 3:如果不支援語法的話 就用Justmate 版主的方法 先把符合日期區間的資料 select 出來 再針對user做群組統計 天行健 君子當自強不息~~@.@ 發表人 - T.J.B 於 2003/04/23 14:38:30
我用的是paradox的格式... 嗯嗯 我再試試看 謝謝大大
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-23 15:24:52 IP:218.16.xxx.xxx 未訂閱
補充 : Local SQL (paradox) 是支援 having 的,不過放的 having 的條作只針對統計欄位    例如 :
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= 2003/4/1 and o_date <=2003/4/30 '  
                  'group by user '  
                  'having sum(money) > 1000'
Query.Active := true;
就只會列出四月份總計money大於1000的user
T.J.B
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-23 16:08:03 IP:61.220.xxx.xxx 未訂閱
引言: 補充 : Local SQL (paradox) 是支援 having 的,不過放的 having 的條作只針對統計欄位 例如 :
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= 2003/4/1 and o_date <=2003/4/30 '  
                  'group by user '  
                  'having sum(money) > 1000'
Query.Active := true;
就只會列出四月份總計money大於1000的user
真是一語驚醒網中人 喔不對~~是夢中人< >< > 我之前一直以為having可以針對所group by 出來的資料做任意的條件選擇 原來只能針對統計欄位 喔~~~~真糗< >< > 天行健 君子當自強不息~~@.@
------
天行健
君子當自強不息~~@.@
jacosun
一般會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-23 16:46:02 IP:61.59.xxx.xxx 未訂閱
引言: 補充 : Local SQL (paradox) 是支援 having 的,不過放的 having 的條作只針對統計欄位 例如 :
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= 2003/4/1 and o_date <=2003/4/30 '  
                  'group by user '  
                  'having sum(money) > 1000'
Query.Active := true;
就只會列出四月份總計money大於1000的user
哈~~大大真是厲害....我最後面也是要做這樣子的動作說 哈~~真素厲害 只不過..小弟用大大的程式碼下來try了幾次,都是 type mismatch in expression 的錯誤... 嗚嗚...新手都被程式玩....
wnhoo
高階會員


發表:75
回覆:443
積分:198
註冊:2003-04-22

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-23 16:52:54 IP:61.155.xxx.xxx 未訂閱
这条语句可以帮你! 合计(MONEY) USER X XYEAR XMONTH 按人员列出每年各月的MONEY合计 select sum(money),user,(year(o_date)*12 month(o_date)) as x,year(o_date) as xyear,month(o_date) as xmonth from order.db ] group by user,xx 风花雪月 e梦情缘
------
风花雪月 e梦情缘
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-23 17:14:38 IP:218.16.xxx.xxx 未訂閱
忘了加 " 及  local SQL 日期格式是 : mm/dd/yyyy    
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= "04/01/2003" and o_date <= "04/30/2003" '  
                  'group by user '  
                  'having sum(money) > 1000'
Query.Active := true;
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-23 17:19:12 IP:211.74.xxx.xxx 未訂閱
如果你的o_date可以改為C,長度8的話,這樣日期就變為20030401 ,20030402 我有一個更好的做法如下: Query.sql.add(' select user,sum(money) from order.db '); Query.sql.add(' where SUBSTRING(o_date FROM 1 FOR 6=' #39 '200304' #39);//這樣就可以算出四月份個人金額了 Query.sql.add(' group by user'); Query.open; 另外個人在日期上比較常用字串而不用Date型態,用Date還要轉來轉去很麻煩... TRY TRY SEE
引言: 我有一個資料庫(order.db)欄位 user(型態a,長度不限)、o_date(型態d,長度不限)、money(型態n、長度不限) 資料表如下:
發表人 - chih 於 2003/04/23 17:20:25
jacosun
一般會員


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-04-24 15:10:00 IP:61.59.xxx.xxx 未訂閱
引言: 忘了加 " 及 local SQL 日期格式是 : mm/dd/yyyy
Query.sql.Text := 'select user,sum(money) from order.db '  
                  'where o_date >= "04/01/2003" and o_date <= "04/30/2003" '  
                  'group by user '  
                  'having sum(money) > 1000'
Query.Active := true;
謝謝大大了,這樣果真可以....
系統時間:2024-07-01 13:41:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!