Office中国论坛/Access中国论坛

标题: 大难题:根据给出的变化趋势条件来进行查询 [打印本页]

作者: lsftesttest    时间: 2008-6-17 23:54
标题: 大难题:根据给出的变化趋势条件来进行查询
先看表里的测试数据:
NAME DT  VAL
A 2008-06-17 10
A 2008-06-16 09
A 2008-06-15 08
A 2008-06-14 06
A 2008-06-13 -1
A 2008-06-12 07
A 2008-06-11 13
B 2008-06-17 10
B 2008-06-16 09
B 2008-06-15 0
B 2008-06-14 02
B 2008-06-13 -1
B 2008-06-12 07
B 2008-06-11 10
C 2008-06-17 0
C 2008-06-16 09
C 2008-06-15 0
C 2008-06-14 06
C 2008-06-13 225
C 2008-06-12 150
C 2008-06-11 100
可能要求进行的查询和期望得到的结果如下:
1.查询在连续N天里val值大于M的员工及其相应的记录
如要求查询连续4天val值大于05则应该返回:
A 2008-06-17 10
A 2008-06-16 09
A 2008-06-15 08
A 2008-06-14 06
C 2008-06-14 06
C 2008-06-13 165
C 2008-06-12 150
C 2008-06-11 100
或各组答案中最接近今天的那条记录:
A 2008-06-17 10
C 2008-06-14 06
2.查询在连续N天里val值每天递增M的员工及其相应的记录
如要求查询连续3天里val值每天增加1的员工则应该返回:
A 2008-06-17 10
A 2008-06-16 09
A 2008-06-15 08
或各组答案中最接近今天的那条记录:
A 2008-06-17 10
3.查询在连续N天里val值每天递增M%的员工及其相应的记录
如要求查询连续3天里val值每天增加50%的员工则应该返回:
C 2008-06-13 225
C 2008-06-12 150
C 2008-06-11 100
或各组答案中最接近今天的那条记录:
C 2008-06-13 225
这种类型的查询是否能只使用access(允许使用中间表和access的VBA)解决而不需借助其它编程语言编程进行分析?
希望各位踊跃发表意见。。。。
作者: tmtony    时间: 2008-6-18 10:37
需要写VBA,循环读取记录,然后给一个记数, 判断是否连续大于, 当次数大于阀值,则更新
作者: liwen    时间: 2008-6-18 11:27
SELECT T.NAME, T.DT, T.VAL, T1.VAL, T2.VAL, T3.VAL
FROM  (SELECT T.NAME, [DT]+3 AS D3, T.VAL
FROM T)  AS T3 INNER JOIN ((SELECT T.NAME, [DT]+2 AS D2, T.VAL
FROM T) AS T2 INNER JOIN ((SELECT T.NAME, [DT]+1 AS D1, T.VAL
FROM T) AS T1 INNER JOIN T ON (T1.D1 = T.DT) AND (T1.NAME = T.NAME)) ON (T2.D2 = T.DT) AND (T2.NAME = T.NAME)) ON (T3.D3 = T.DT) AND (T3.NAME = T.NAME)
WHERE (((T.VAL)>=[M]) AND ((T1.VAL)>=[M]) AND ((T2.VAL)>=[M]) AND ((T3.VAL)>=[M]));

对于数据处理access肯定能做,上面的查询引用表"T",得到你要的第一个结果.
作者: lsftesttest    时间: 2008-6-30 16:38
很感谢大家的关注,但楼上朋友的方法需要不断的join,而我在实际使用中,连续的天数真的很可能会超过10天的,虽然还是可以用字符串动态构建查询语句的方法解决,但终究不太方便。。我在csdn的ms sql server版也发了同样的帖子,那边有几位朋友给出的答案似乎比较符合我的要求,我正在消化中,各位如有空也不妨过去看看交流一下:
http://topic.csdn.net/u/20080617 ... 0-b067093e3722.html
这贴就先结了吧。。
希望我以后再有难题的时候,仍然能得到各位的热心帮助。
这个论坛似乎没有类似csdn的结贴给分之类的系统??那就只有再衷心说声感谢。。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3