在DBChart中如何将字段值与自定义的坐标值进行比较? |
答題得分者是:Mickey
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
"SubTotal" 對應到 DBChart Y 軸, "MM" 對應到 DBChart X 軸
SQL 如下 :
select sum(sl) SubTotal, '01月' MM from orders where EXTRACT(MONTH FROM jzrq)=1 union select sum(sl) SubTotal, '02月' MM from orders where EXTRACT(MONTH FROM jzrq)=2 union select sum(sl) SubTotal, '03月' MM from orders where EXTRACT(MONTH FROM jzrq)=3 union select sum(sl) SubTotal, '04月' MM from orders where EXTRACT(MONTH FROM jzrq)=4 union select sum(sl) SubTotal, '05月' MM from orders where EXTRACT(MONTH FROM jzrq)=5 union select sum(sl) SubTotal, '06月' MM from orders where EXTRACT(MONTH FROM jzrq)=6 union select sum(sl) SubTotal, '07月' MM from orders where EXTRACT(MONTH FROM jzrq)=7 union select sum(sl) SubTotal, '08月' MM from orders where EXTRACT(MONTH FROM jzrq)=8 union select sum(sl) SubTotal, '09月' MM from orders where EXTRACT(MONTH FROM jzrq)=9 union select sum(sl) SubTotal, '10月' MM from orders where EXTRACT(MONTH FROM jzrq)=10 union select sum(sl) SubTotal, '11月' MM from orders where EXTRACT(MONTH FROM jzrq)=11 union select sum(sl) SubTotal, '12月' MM from orders where EXTRACT(MONTH FROM jzrq)=12 order by MM |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: 前辈:那个SQL我试过, 不过我不是求和,而是直接用字段。 出现的问题就是当月份有两个的时候,就有问题:03-2-23,03-02-25 ,它就会显示出两个02来。而出现空值时,它就不显示该月份,出现了间隔。 按您的意思,就是所有的1月份或2月份求和,然后统计出来,这样可以会避免出现有两个月份。 不知有无理解错前辈的意思,还望前辈多指点。SQL 不用 SUM(sl) 當然會每一筆都 select 出來, 求取每個月的 sl 總和, 難道不是你要的 ? 是我誤會你的問題嗎 ? 如果是要每個月的 sl 平均, 可用 AVG(sl), 如果是要每個月的 sl 最大, 可用 MAX(sl), 如果是要每個月的 sl 最小, 可用 MIN(sl). |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
前辈, 不好意思,可能是我表达方面不够明确,所以使前辈产生误会;
我要的是每笔资料在各个月的价格情况。
如产品A:
在1 月份时进货一次:¥20.4
在2 月份时进货一次:¥27.4
在3 月份时进货二次:¥90,¥20
在4 月份时进货一次:¥20.4
5,6月份无进货
…… 然后做个统计。
显示出产品在一年中每个月的进货价格的走向图。
目的就是为了,了解产品A在哪个月进货时价格最低,哪个月进货时价格最高,在各个月进货的次数。
问题:显示出两个三月,而不是在“三月”中显示出两个记录;
其他月份如图所显示出的效果,省略了7~12月。
见图:
發表人 - deity 於 2003/08/01 09:13:26 發表人 - deity 於 2003/08/01 09:20:26
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
給你的 Sample 稍稍改一下就可以了....
var yy,mm,dd,mtmp,i : word; XOffSet : double; MonthChanged : boolean; begin query1.Open; XOffSet := 0.1; mtmp := 0; Series1.CustomBarWidth := 3; while not query1.Eof do begin mm := query1.fieldbyname('MM').asinteger; MonthChanged := (mm<>mtmp); if MonthChanged then begin for i := mm-1 downto mtmp 1 do Series1.AddXY(i,0,Format('%-2.2d',[i]) '月',clNone); Series1.AddXY(mm,query1.fieldbyname('ItemsTotal').AsFloat, Format('%-2.2d',[mm]) '月',clRed); end else Series1.AddXY(Series1.XValues.Last XOffSet , query1.fieldbyname('ItemsTotal').AsFloat, '',clRed); mtmp := mm; query1.Next; end; end;發表人 - Mickey 於 2003/08/11 15:38:54 |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |