回 帖 发 新 帖 刷新版面

主题:用SQL有没有办法做到?

现有一表aaa
日期            收入
2007-01-01     23.22
2007-01-02     56.23
2007-02-02     63.20
2007-02-05     52.21
2007-02-12     42.31
2007-03-09     55.55
2007-03-10     66.66
2007-08-08    33.33
求SQL语句,将以上收入按星期一、星期二。。。。星期日分组汇总,存入数组B中。
数组B格式
星期一    56.33
星期二    36.56
星期三    108.32
。。。。
请高手指点。(用VFP8)谢谢!

回复列表 (共16个回复)

11 楼

[quote][b][color=FF0000][size=3]各位网友:
老兄:
你们好:
帮助测试看看结果:[/size][/color][/b]

* 用 SUBSTR(一种环境没通过) 或 SUBSTRC (两种环境没通过)函数:
日期=DATE()
?dow(日期) && 返回 2
? SUBSTRC('日一二三四五六',dow(日期),1)  && 始终返回“日”   错误
? SUBSTRC('日一二三四五六',2 ,1)  && 返回“一”
? SUBSTRC('日一二三四五六',EVALUATE(STR(DOW(日期))),1)  && 返回“一”

日期=DATE()+1
?dow(日期) && 返回 3
? SUBSTRC('日一二三四五六',dow(日期),1)  && 始终返回“日”   错误
? SUBSTRC('日一二三四五六',2 ,1)  && 返回“二”
? SUBSTRC('日一二三四五六',EVALUATE(STR(DOW(日期))),1)  && 返回“二”
[/quote]
不错,如cbl518坛友所反映的情况的确出现了,这算是系统的一只Bug吧!大家使用VFP时注意,多谢cbl518的发现与提醒!
补充:
1,也多谢10楼的提醒!
2,经翻书本,dow()明确是返回数值类型是数值型.
3,可能早期版本没有设定"整型"这一数据类型,系统不加改变就将dow()搬到之后的版本了,其实dow()返回整型数据更为合适.还有一些之后版本的函数也没有相应的协调修正,系统也没有很理想地解决整型数据与数值型数据的兼容问题.

12 楼

* 以上似乎可以看出,若第二参数为整数,则正确。
? dow(date())         返回值为整数啊!!!
? int(dow(date()))    添加取整函数,确实正确。
百思不得其解,难道 dow() 返回值,隐藏了表示精度小数位。
因为这个原因,我在编程,总是要反复测试。

13 楼

谢谢各位老师指教.问题圆满解决.通过此贴不但学到了SQL知识,还学到了其它知识,受益颇深.特别是cbl518老师发现多处VFP的BUG,使我们初学者在应用时少走了好多的弯路.种子老师一直督促我用SQL来管理数据,现在看来真的是事半功倍.以前用一串命令才能解决的问题,现在只用一行了.oufeiwen老师的SQL也是大师级的,为我帮忙不少.能够看出来Ilikefox
老师是数据库方面的专家.以后我要多向你们请教啦.

14 楼

感觉讲的很诚恳,现在可能挡也挡不住了。

15 楼

呵.是呀.以前只是在VFP做不到时,才用SQL.现在观念要变啦.

16 楼


老师,此句在我的VFP9.0上为什么就通不过呢?出现“GROUP BY 缺失或无效”的提示:

SELECT '星期'+SUBSTRC('日一二三四五六',EVALUATE(STR(DOW(日期))),1), SUM(收入), DOW(日期) FROM AAA GROUP BY 3 ORDER BY 3 INTO ARRAY 数组B

我来回复

您尚未登录,请登录后再回复。点此登录或注册