设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 2224|回复: 12
打印 上一主题 下一主题

[查询] [讨论]用查询统计员工所在工位作业时间

[复制链接]
跳转到指定楼层
1#
发表于 2007-9-5 16:21:11 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
希望用一个或二个查询实现得出每个员工所在工位作业时间,如
系统编号工号工位能力作业日期
0600001N235电批操作2003-4-23
0600002N235锡点目视2003-5-1
0600003N235手插2003-6-1

N235这个人电批操作8天,锡点目视30天,手插1557(now()-2003-6-1)天,要用到的数据见附件,希望有兴趣的一起讨论一下,呵呵。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
13#
发表于 2007-9-13 12:40:07 | 只看该作者
整合到交叉表
TRANSFORM Sum(e.天数) AS 天数之总计
SELECT e.工号, Sum(e.天数) AS [总计 天数]
FROM [SELECT c.系统编号, c.工号, c.工位能力, c.作业日期, d.结束日期, IIf(IsNull(d.结束日期),datediff("d",c.作业日期,format(now(),"yyyy-mm-dd")),datediff("d",c.作业日期,d.结束日期)) AS 天数
FROM 表1 AS c LEFT JOIN [SELECT a.系统编号, a.工号, a.工位能力, a.作业日期, min(b.作业日期) AS 结束日期
FROM 表1 AS a INNER JOIN 表1 AS b ON a.工号=b.工号
WHERE b.作业日期>a.作业日期
GROUP BY a.工号, a.系统编号, a.工位能力, a.作业日期
]. AS d ON val(c.系统编号)=val(d.系统编号)
ORDER BY c.工号, c.系统编号]. AS e
GROUP BY e.工号
PIVOT e.工位能力;
12#
发表于 2007-9-13 12:39:09 | 只看该作者
用左联接重写了查询
SELECT c.系统编号, c.工号, c.工位能力, c.作业日期, d.结束日期, IIf(IsNull(d.结束日期),datediff("d",c.作业日期,format(now(),"yyyy-mm-dd")),datediff("d",c.作业日期,d.结束日期)) AS 天数
FROM 表1 AS c LEFT JOIN [SELECT a.系统编号, a.工号, a.工位能力, a.作业日期, min(b.作业日期) AS 结束日期
FROM 表1 AS a INNER JOIN 表1 AS b ON a.工号=b.工号
WHERE b.作业日期>a.作业日期
GROUP BY a.工号, a.系统编号, a.工位能力, a.作业日期
]. AS d ON val(c.系统编号)=val(d.系统编号)
ORDER BY c.工号, c.系统编号;
11#
 楼主| 发表于 2007-9-13 12:02:24 | 只看该作者
谢谢WZJ与ANDYMARK的大力支持,在下受益非浅!
10#
发表于 2007-9-13 10:52:03 | 只看该作者
对7楼程序的修订
查询1的sql语句更改为:
SELECT DMin("[作业日期]","表1","[工号]='" & [工号] & "' and [作业日期]> #" & [作业日期] & "#") AS 结束日期, 表1.工号, 表1.作业日期, 表1.工位能力, IIf(IsNull([结束日期]),DateDiff("d",[作业日期],Format(Now(),"yyyy-mm-dd")),DateDiff("d",[作业日期],[结束日期])) AS 天数
FROM 表1
ORDER BY 表1.工号, 表1.作业日期;
9#
发表于 2007-9-13 10:49:56 | 只看该作者
gju

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2007-9-13 10:15:34 | 只看该作者
建议您用2楼的思路来完成。
1楼的方式的优点是,输入简单;缺点是:一旦有记录漏输,不但统计出错,而且不容易被发现。如果工作不能肯定绝对是连续工作的,那更不能用一楼的思路来完成。

如果用2楼的思路来完成,在输入新记录时,用代码寻找之前该工号是否有未完成的记录,有则提示是否用代码同步(也就一个更新查询),就能解决问题。
7#
 楼主| 发表于 2007-9-13 09:14:23 | 只看该作者
不能对得出的查询再次进行交叉查询???请andymark关注一下!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
 楼主| 发表于 2007-9-12 21:45:40 | 只看该作者
andymark,真有才,谢谢了!
5#
发表于 2007-9-12 20:15:54 | 只看该作者
学习...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-7 02:12 , Processed in 0.096953 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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