主题:用SQL有没有办法做到?
海军
[专家分:5350] 发布于 2007-10-07 23:01:00
现有一表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 楼
oufeiwen [专家分:910] 发布于 2007-10-08 12:50:00
[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 楼
cbl518 [专家分:57140] 发布于 2007-10-08 12:58:00
* 以上似乎可以看出,若第二参数为整数,则正确。
? dow(date()) 返回值为整数啊!!!
? int(dow(date())) 添加取整函数,确实正确。
百思不得其解,难道 dow() 返回值,隐藏了表示精度小数位。
因为这个原因,我在编程,总是要反复测试。
13 楼
海军 [专家分:5350] 发布于 2007-10-08 19:00:00
谢谢各位老师指教.问题圆满解决.通过此贴不但学到了SQL知识,还学到了其它知识,受益颇深.特别是cbl518老师发现多处VFP的BUG,使我们初学者在应用时少走了好多的弯路.种子老师一直督促我用SQL来管理数据,现在看来真的是事半功倍.以前用一串命令才能解决的问题,现在只用一行了.oufeiwen老师的SQL也是大师级的,为我帮忙不少.能够看出来Ilikefox
老师是数据库方面的专家.以后我要多向你们请教啦.
14 楼
北京种子乐 [专家分:3710] 发布于 2007-10-08 19:15:00
感觉讲的很诚恳,现在可能挡也挡不住了。
15 楼
海军 [专家分:5350] 发布于 2007-10-08 19:20:00
呵.是呀.以前只是在VFP做不到时,才用SQL.现在观念要变啦.
16 楼
myww [专家分:1190] 发布于 2007-10-09 20:40:00
老师,此句在我的VFP9.0上为什么就通不过呢?出现“GROUP BY 缺失或无效”的提示:
SELECT '星期'+SUBSTRC('日一二三四五六',EVALUATE(STR(DOW(日期))),1), SUM(收入), DOW(日期) FROM AAA GROUP BY 3 ORDER BY 3 INTO ARRAY 数组B
我来回复