设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 933|回复: 3
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-17 23:54:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先看表里的测试数据:
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)解决而不需借助其它编程语言编程进行分析?
希望各位踊跃发表意见。。。。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2008-6-18 10:37:22 | 只看该作者
需要写VBA,循环读取记录,然后给一个记数, 判断是否连续大于, 当次数大于阀值,则更新
3#
发表于 2008-6-18 11:27:36 | 只看该作者
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",得到你要的第一个结果.
4#
 楼主| 发表于 2008-6-30 16:38:49 | 只看该作者
很感谢大家的关注,但楼上朋友的方法需要不断的join,而我在实际使用中,连续的天数真的很可能会超过10天的,虽然还是可以用字符串动态构建查询语句的方法解决,但终究不太方便。。我在csdn的ms sql server版也发了同样的帖子,那边有几位朋友给出的答案似乎比较符合我的要求,我正在消化中,各位如有空也不妨过去看看交流一下:
http://topic.csdn.net/u/20080617 ... 0-b067093e3722.html
这贴就先结了吧。。
希望我以后再有难题的时候,仍然能得到各位的热心帮助。
这个论坛似乎没有类似csdn的结贴给分之类的系统??那就只有再衷心说声感谢。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-3 01:26 , Processed in 0.099303 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表