设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 用选择查询还是交叉查询都不成功,求帮助!

[复制链接]
跳转到指定楼层
1#
发表于 2011-6-27 10:53:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 紫风 于 2011-6-27 14:54 编辑

1,数据经窗体录入后保存到“tbl卸货派工”的记录如下:
   
日期
入库ID
客户名称
入库车牌
实到数
分货
主班
副班
2010年4月30日
25327
A
粤BS2182
252
TRUE
1班
3班
2011年1月15日
43528
B
粤BWL088
25
TRUE
1班
 
2011年6月21日
51277
C
赣F53207
326
FALSE
1班
 
2011年6月21日
51553
D
粤KJ2190
360
FALSE
1班
 


2,问题:想做一个查询,需要做出来的结果如下表:
班级
日期
卸车数
卸货箱数
分货次数
分货箱数
1班
2010-4-30
0.5
126
0.5
126
3班
2010-4-30
0.5
126
0.5
126
1班
2011-1-15
1
25
0
0
1班
2011-6-21
2
686
0
0


我试过用选择查询和交叉表查询,都做不出来,附件是上传的mdb, 请各位帮忙想一下,谢谢!

这个查询我想用来作为某报表的源,报表想做成如下:

1班
日期,卸车数,卸货件数,分货次数,分货件数

------------------------------------------------------------------------

3班
日期,卸车数,卸货件数,分货次数,分货件数

本帖子中包含更多资源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2011-6-27 14:58:04 | 只看该作者
没什么规律,自己手工分一下好了。
3#
 楼主| 发表于 2011-6-27 15:01:45 | 只看该作者
todaynew 发表于 2011-6-27 14:58
没什么规律,自己手工分一下好了。

回版主:是没有规律的。
我的问题是:如果主班和副班都有人作业,如何将前面的数据平均分成2份呢?
4#
发表于 2011-6-27 15:16:30 | 只看该作者
紫风 发表于 2011-6-27 15:01
回版主:是没有规律的。
我的问题是:如果主班和副班都有人作业,如何将前面的数据平均分成2份呢?

这个好办。
SELECT 卸车ID,日期,入库ID,客户名称,入库车牌, IIf(nz([副班],"")="",tbl卸货派工.实到数,tbl卸货派工.实到数/2) AS 实到数, 分货, 主班 as 作业班
FROM tbl卸货派工
UNION ALL SELECT 卸车ID,日期,入库ID,客户名称,入库车牌, IIf(nz([副班],"")="",tbl卸货派工.实到数,tbl卸货派工.实到数/2) AS 实到数, 分货, 副班 as 作业班
FROM tbl卸货派工
Where nz([副班],"")<>"";
5#
 楼主| 发表于 2011-6-27 16:28:44 | 只看该作者
本帖最后由 紫风 于 2011-6-27 16:33 编辑
todaynew 发表于 2011-6-27 15:16
这个好办。
SELECT 卸车ID,日期,入库ID,客户名称,入库车牌, IIf(nz([副班],"")="",tbl卸货派工.实到数,t ...


谢谢版主!

但是,卸车数的0.5该用什么解决呢?我想通过卸车ID的计数来实现……还是一样,如果主班和副班都有作业,则主班、副班的卸车数各给0.5。其实卸车ID不用显示内容,只要做计数就好……

分货(原来属性为 T/F)能不能做成正数?

还有一个问题,这样的联合查询我如果再从第二个表里选择数据,可以么?
比方说另一个表是tbl装货派工,如果我想在这个联合查询里加里面的装货数量,是不是在两条语句里都加上 tbl装货派工.装货数量?
6#
发表于 2011-6-27 17:26:16 | 只看该作者
紫风 发表于 2011-6-27 16:28
谢谢版主!

但是,卸车数的0.5该用什么解决呢?我想通过卸车ID的计数来实现……还是一样,如果主班和 ...

1、0.5是个什么玩意不太懂,如果有额定装载量,那么就用实到数量/额定装载量就行了。

2、分货字段就是个分类而已,用什么方式无所谓。实在要转换就用iif函数转换好了。

3、联合查询你想去什么数据都可以,只要合理就行,数据源可以是一个表反复取几次,也可以是不同表取数后组合。

所有的这一切,都可以尝试着进行,这样就能很快搞明白了。
7#
 楼主| 发表于 2011-6-27 17:35:20 | 只看该作者
todaynew 发表于 2011-6-27 17:26
1、0.5是个什么玩意不太懂,如果有额定装载量,那么就用实到数量/额定装载量就行了。

2、分货字段就是 ...

版主:
1. 卸车数0.5是指: 如果卸车数=1,作业班有2个,则每个作业班的工作量为0.5车。
2. 我尝试过用IIF,但是会将我所有的查询结果都转换成0.5。(卸车数: IIF([入库ID]>0, 0.5, 0))
3. 联合查询我想从2个表里取数据,但是SELECT...FROM后面能跟2个表名么?
8#
发表于 2011-6-27 17:42:20 | 只看该作者
紫风 发表于 2011-6-27 17:35
版主:
1. 卸车数0.5是指: 如果卸车数=1,作业班有2个,则每个作业班的工作量为0.5车。
2. 我尝试过用II ...

不太明白你的想法,你自己尝试着做吧。呵呵
9#
发表于 2011-6-27 23:31:13 | 只看该作者
紫风 发表于 2011-6-27 17:35
版主:
1. 卸车数0.5是指: 如果卸车数=1,作业班有2个,则每个作业班的工作量为0.5车。
2. 我尝试过用II ...


如附件的查询,应该可以满足你的要求。
注:你的文字要求和要求的结果表有冲突,这是以文字描述为准的

本帖子中包含更多资源

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

x
10#
发表于 2011-6-27 23:40:26 | 只看该作者
如果不明白,也可以用四步查询的方法:
1、新建查询:
SELECT tbl卸货派工.主班 AS 班级, tbl卸货派工.日期, IIf(Len(Trim(nz([副班],"")))=0,1,0.5) AS 卸车数, IIf(Len(Trim(nz([副班],"")))=0,[实到数],[实到数]/2) AS 卸货箱数, IIf([分货]=True,IIf(Len(Trim(nz([副班],"")))=0,1,0.5),0) AS 分货次数, IIf([分货]=True,IIf(Len(Trim(nz([副班],"")))=0,[实到数],[实到数]/2),0) AS 分货箱数, tbl卸货派工.卸车ID
FROM tbl卸货派工
保存为“查询1”
2、新建查询:
SELECT tbl卸货派工.副班 AS 班级, tbl卸货派工.日期, IIf(Len(Trim(nz([主班],"")))=0,1,0.5) AS 卸车数, IIf(Len(Trim(nz([主班],"")))=0,[实到数],[实到数]/2) AS 卸货箱数, IIf([分货]=True,IIf(Len(Trim(nz([主班],"")))=0,1,0.5),0) AS 分货次数, IIf([分货]=True,IIf(Len(Trim(nz([主班],"")))=0,[实到数],[实到数]/2),0) AS 分货箱数, tbl卸货派工.卸车ID
FROM tbl卸货派工
WHERE (((Len(Trim(nz([副班],""))))<>0))
保存为“查询2”
3、新建查询:
SELECT * FROM 查询1 UNION SELECT * FROM 查询2
保存为“查询3”
4、新建查询:
SELECT 查询3.班级, 查询3.日期, Sum(查询3.卸车数) AS 卸车数之总计, Sum(查询3.卸货箱数) AS 卸货箱数之总计, Sum(查询3.分货次数) AS 分货次数之总计, Sum(查询3.分货箱数) AS 分货箱数之总计
FROM 查询3
GROUP BY 查询3.班级, 查询3.日期
ORDER BY 查询3.日期;
保存为“查询4”
运行“查询4”,OK!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 14:11 , Processed in 0.096826 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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