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

SQL语句用法变化

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


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-20 22:35:02 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; 运行效果如下: 想得到的功能如下: 如图所示,举例说明:项目类型名称一共有九个,这是固定不变的,在ADOQUERY查询时,有可能会出现一个,也可能同时出现九个。如果象图中所示,一直往下排,那么没有什么问题,如果我要用表格方式表达,那么九个名称我要预先写在表格中,我可以每列三个,一共三列,那么有其中一个时,其它八个字段后面就是空白的,或者以0代替填入,但是这到底是出现一个,还是几个,到底是哪一个出现,哪几个出现,都是活的,我如何取到相对应的值填入到相应的字段后面呢
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-21 07:11:39 IP:222.184.xxx.xxx 未訂閱
这个问题问得比较复杂,我再从另一方面说一下,我现在有九个项目类型,如果我用九个ADOQUERY,每一个查询时加上"项目类型=xxxx(九个中的一个名字)”那么这个问题就好解决了,但好象加九个有一点不妥,呵呵,太多了。现在用一个QUERY,是能查询出我要的结果的,关键是如何取得相应的结果填到相应的框里面,没有合计金额的就不填或者填0
------
我的编程起步于ktop,我将永远支持ktop
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-21 10:26:41 IP:210.61.xxx.xxx 未訂閱
ntjrr您好 既然項目類型是固定的 您可以用union語法虛構幾筆
select top 1 'item1' as 項目類型,'' as tot from tb_sf
union
select top 1 'item2' as 項目類型,'' as tot from tb_sf
union
select 項目類型,Sum(銷價) as tot from tb_sf where 收費日期 between '20050501' and '20050531'
group by 項目類型
order by 項目類型
................... .楛耕傷稼,楛耘失歲. ...................
ntjrr
高階會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-21 11:58:17 IP:222.184.xxx.xxx 未訂閱
前辈的指点我未能悟出。我再从另一个角度来解释一下我的问题:数据表中有十来个字段,其中有两个字段,一个是项目类型,一个是单项累计,假设说项目类型的内容总共只有九个,这是固定不变的,不会多于九个,也不会少于九个,内容也是固定好的,不会变化。那么我现在要划一个表,把项目类型的九个种类填入的表中,后面的单项累计是空白的,等待取到相应的值填入。那么我的查询就是要查询出数据表中的记录,项目类型如果相同的,就合计每条的单项累计,填入到表中,如果不相同(等于该名称的项目类型就只有一条,)那合计的话也就是等于这一条记录的单项累计,如果记录中没有这个项目类型,那么表中该字段的相应的值就为0或者为空白也行的。
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-21 17:35:05 IP:222.184.xxx.xxx 未訂閱
是问题太复杂还是问题没表达明白,请高手们发表意见,我再回贴答复,谢谢!
------
我的编程起步于ktop,我将永远支持ktop
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-22 14:47:50 IP:210.65.xxx.xxx 未訂閱
Hi ntjrr,    1.你使用何種資料庫?版本為何?    2.九個項目類型內容是否儲存於另一 Table 中?若有 Table 名稱與欄位為何?若無,如何取得?    3.你指的是無論如何就是 select 出來此九個項目類型與其 Sum(單項累計)?    4.試著從 Outter Join 去著手     ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
ntjrr
高階會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-22 17:32:33 IP:222.184.xxx.xxx 未訂閱
数据库为ACCESS2000,九个类型在一个数据表中,栏位名就叫项目类型,我就举个简单的例子,栏位内容就叫项目类型1,项目类型2,直到9就是了,这几个是随机出现的,如果按照我的方法,如第一幅图中所示,分成一列往下打,那么就没什么问题了,关键是我要做成一个表,那么如何取到相应的值到相应的位置就复杂了。
------
我的编程起步于ktop,我将永远支持ktop
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-23 08:46:10 IP:210.65.xxx.xxx 未訂閱
Hi ntjrr,    
select  i.item,
        iif(isnull(sum(t.cnt)),0,sum(t.cnt)) as cnt
from    item i left outer join table1 t on i.item = t.item
group by
        i.item
item : 項目類型 Table table1 : Your Table tb_sf ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
ntjrr
高階會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-26 07:10:05 IP:222.184.xxx.xxx 未訂閱
再贴两幅图来说明一下我的问题,下图为我想取的数据的资料表: 下图为我从数据表中取出资料后做出的打印效果图: 图一资料表中的项目类型栏位内容是随机产生的,比如西药费可能出现一次,也可能出现X次,也可能一次不出现,其它费用类同,但出现项目类型名称是和图二中一样的,就是说不会在资料表中出现和图二打印表中不一样的名称的项目类型。
------
我的编程起步于ktop,我将永远支持ktop
ntjrr
高階會員


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-27 20:58:33 IP:222.184.xxx.xxx 未訂閱
我要的数据其实ADOQUERY1查询结果中都有了,如果没有的就是为空白不填,有高手指点说用WHILE循环语句从ADOQUERY1中取结果,然后填到表中的字段中去。但我不懂具体的代码
------
我的编程起步于ktop,我将永远支持ktop
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-28 09:46:47 IP:210.65.xxx.xxx 未訂閱
Hi ntjrr ,    以下連結範例供你參考看看是否有合用之處:    http://delphi.ktop.com.tw/loadfile.php?TOPICID=23172968&CC=518252 發表人 -
------
Fishman
ntjrr
高階會員


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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-28 21:16:40 IP:222.184.xxx.xxx 未訂閱
感谢各位前辈的指点,但因我功底实在太差,未能悟出方法,现考虑到我的程序是用FASTREPORT设计打印的,所以我干脆将问题再简单地写一下,把我的做好的部份程序也一起传上了,我希望自己能够更清楚地表达出我想提的问题,以让前辈们好指点,如果各位大大仍有兴趣指点的话前看http://delphi.ktop.com.tw/topic.php?TOPIC_ID=74097
------
我的编程起步于ktop,我将永远支持ktop
系統時間:2024-07-02 23:02:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!