SQL语句用法变化 |
答題得分者是:Fishman
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
代码如下:
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 發送簡訊給我 |
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
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 發送簡訊給我 |
前辈的指点我未能悟出。我再从另一个角度来解释一下我的问题:数据表中有十来个字段,其中有两个字段,一个是项目类型,一个是单项累计,假设说项目类型的内容总共只有九个,这是固定不变的,不会多于九个,也不会少于九个,内容也是固定好的,不会变化。那么我现在要划一个表,把项目类型的九个种类填入的表中,后面的单项累计是空白的,等待取到相应的值填入。那么我的查询就是要查询出数据表中的记录,项目类型如果相同的,就合计每条的单项累计,填入到表中,如果不相同(等于该名称的项目类型就只有一条,)那合计的话也就是等于这一条记录的单项累计,如果记录中没有这个项目类型,那么表中该字段的相应的值就为0或者为空白也行的。
------
我的编程起步于ktop,我将永远支持ktop |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi ntjrr, 1.你使用何種資料庫?版本為何? 2.九個項目類型內容是否儲存於另一 Table 中?若有 Table 名稱與欄位為何?若無,如何取得? 3.你指的是無論如何就是 select 出來此九個項目類型與其 Sum(單項累計)? 4.試著從 Outter Join 去著手 ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
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.itemitem : 項目類型 Table table1 : Your Table tb_sf ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi ntjrr , 以下連結範例供你參考看看是否有合用之處: http://delphi.ktop.com.tw/loadfile.php?TOPICID=23172968&CC=518252 發表人 -
------
Fishman |
ntjrr
高階會員 發表:240 回覆:312 積分:110 註冊:2005-04-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |