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

关于一个SQL查询语法

答題得分者是:cashxin2002
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-14 18:14:21 IP:222.184.xxx.xxx 未訂閱
ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select 项目类型,Sum(应收金额) from tb_sf where 收费日期 between :Date1 and :Date2'); ADOQuery1.SQL.Add('Group by 项目类型 '); ADOQuery1.Parameters.ParamByName('Date1').Value := formatdatetime('yy-m-d',DateTimePicker1.Date); ADOQuery1.Parameters.ParamByName('Date2').Value := formatdatetime('yy-m-d',DateTimePicker2.Date); ADOQuery1.Open; if ADOQuery1.IsEmpty then showmessage ('没有找到相符的记录') 想要达到的效果:数据表中字段名为项目类型的,如果项目类型的内容是一样的,那么把所有该类型的相应记录字段中的应收金额求和。比如项目类型是西药费的,那么所有的西药费的应收金额求一下和,如果是治疗费的,那么所有的治疗费求和。 实际运行中只能达到的效果:西药费和治疗费等所有存在的不同类型都可以列出来了(当然不是重复列出,只列不同的,这也是我要的效果中的一部分),但是统计结果是只有西药费的应收金额有结果(而且是把表中的所有的应收金额都加到西药费上去了,其它的比如治疗费等,都是为0. 请哪位前辈指点一二,谢谢!
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-14 18:54:13 IP:202.62.xxx.xxx 未訂閱
您好﹗    單從您的程式碼來看﹐應該是沒有問題的﹒ 覺得應該是收費日期條件值的問題﹐先把收費日期的條件值刪掉﹐再跑跑看應該就可以了﹐如下﹕ ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('select 项目类型,Sum(应收金额) from tb_sf '); ADOQuery1.SQL.Add('Group by 项目类型 '); ADOQuery1.Open; if ADOQuery1.IsEmpty then showmessage ('没有找到相符的记录')    收費日期欄位形態為何﹖    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-14 19:32:40 IP:222.184.xxx.xxx 未訂閱
cashxin2002前辈,您好! 我估计和日期没有关系的,因为我的另一段几乎一样的代码是运行成功的(好象也是您指点过的)我的另一段代码中就是改成了count(数量),项目类型改成的是项目名称,其它所有代码的控件都是一模一样,那个运行是成功的。 当然我也根据您的指点去掉了日期一试,结果还是这样,没什么改变,如图 我试着把SUM改成了COUNT,其它什么都不变,那么他就每个类型都有相应的值了,不会为0,不懂是不是SUM上有什么错? 另外如图上所示,西药费的总计是所有类型的总计,这个数据是对的,但实际上应该是每一个类型都有自己的值,然后总计才是那个数字。现在等于是把表中的所有类型都当作西药费来统计了,(注:我的西药费在类型表中是第一个字段)
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-14 19:51:02 IP:202.62.xxx.xxx 未訂閱
您好﹗    Sum和Count是具有不同作用的彙總函數﹐Sum是指合計﹐而Count是指筆數﹒ 很奇怪的現象﹐照程式碼部分看真的是沒有什么錯誤﹐是使用Access資料庫形態嗎﹖大多數資料庫形態都有支援Sum彙總函數﹐試試重新開個Form﹐再使用同樣的程式碼和SQL敘述擷取一次看看﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-14 19:55:47 IP:222.184.xxx.xxx 未訂閱
我知道,我只是说一下,就是COUNT统计笔数好象是对的,(在另外一例也是对的,也是您指点的)但SUM就出现了如图现象,我用的是ACCESS,我再试试您的办法
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-14 20:19:43 IP:222.184.xxx.xxx 未訂閱
重新做了一下还是不行,试着什么都不改,就把SUM改为COUNT,那么几个类型所统计的笔数都是对的,但换成SUM,就只统计一个类型,其它都为0
------
我的编程起步于ktop,我将永远支持ktop
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-14 20:55:25 IP:202.62.xxx.xxx 未訂閱
您好﹗    很奇怪的現象喔﹐從Access開啟此資料表檢查看看﹐是否其它除西藥費之外的項目類型對應的應收金額是否全部為0﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
ntjrr
高階會員


發表:240
回覆:312
積分:110
註冊:2005-04-24

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-14 21:00:10 IP:222.184.xxx.xxx 未訂閱
我又仔细看了一下,录入的时候是不为0的,但由于另一段代码把他处理成了0,不好意思,谢谢前辈! 發表人 - ntjrr 於 2005/06/14 21:12:54
------
我的编程起步于ktop,我将永远支持ktop
supman
尊榮會員


發表:29
回覆:770
積分:924
註冊:2002-04-22

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-14 21:15:45 IP:203.204.xxx.xxx 未訂閱
您好: 另外如图上所示,西药费的总计是所有类型的总计,这个数据是对的,但实际上应该是每一个类型都有自己的值,然后总计才是那个数字。现在等于是把表中的所有类型都当作西药费来统计了,(注:我的西药费在类型表中是第一个字段) 紅色的這句話感覺有問題,我的建議是把sample資料弄幾筆出來看看。
系統時間:2024-11-25 18:43:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!