一下统计的SQL语句如何写?(50分)

  • 主题发起人 主题发起人 lxmzm
  • 开始时间 开始时间
L

lxmzm

Unregistered / Unconfirmed
GUEST, unregistred user!
在access中有表:资料,验收,质量,其中字段“编号”相同
结构如下:
资料: 编号,说明
验收:编号,不合格号,判定日期
质量:编号,通知单号,收到日期

现在需要的是按“编号”统计在指定的时间区域内,不同编号的物资在“验收”和“质量”
中出现的次数。


用:select a.编号,a.说明,count(b.不合格号),count(c.通知单号) from 资料 a,验收 b,质量 c where
a.编号=b.编号 and a.编号=b.编号 group by a.编号,b.不合格号,c.通知单号
返回结果不对。




 
select 编号 ,count(*) from 验收 where 编号 in (select 编号 from 资料 where 日期>=
fromdate and 日期<=enddate ) group by 编号

select 编号 ,count(*) from 质量 where 编号 in (select 编号 from 资料 where 日期>=
fromdate and 日期<=enddate ) group by 编号
 
select a.编号,a.说明,count(b.不合格号),count(c.通知单号) from 资料 a,验收 b,质量 c where
a.编号=b.编号 and a.编号=b.编号 group by a.编号,a.说明
 
不会吧,联合查询也能得到正确结果?应该分别查询
Select 编号,count(*) from 验收 where 判定日期>@giveDay and 判定日期<=@giveday
group by 编号

Select 编号,count(*) from 质量 where 收到日期>@giveDay and 收到日期<=@giveday
group by 编号
 
若要联合查询,如何作呢?
 
这样绝对不行,必须用到 UNION 和 JOIN才可以实现!
 

建立两个分开查询的视图,然后联合两个视图得出查询结果
 
建立两个分开查询的视图,然后联合两个视图得出查询结果

如何JOIN?
 
select a.编号,a.说明,sum(iif(b.不合格号)>0,1,0),sum(iif(c.通知单号)>0,1,0)
from 资料 a,验收 b,质量 c
where a.编号=b.编号 and a.编号=c.编号 and b.rq... and c.rq....
group by a.编号,b.不合格号,c.通知单号
 
select 编号,说明,
(select count(不合格号) from 验收 where 日期>=起始日期 and 日期<=结束日期 and 编号=AAA.编号),
(select count(通知单号) from 质量 where 日期>=起始日期 and 日期<=结束日期 and 编号=AAA.编号)
from 资料 AAA
order by 编号
 
select a.编号,a.说明,b.不合格数,c.质量数
from 资料 a,
(select 编号,count(不合格号) as 不合格数 from 验收
where 日期>=起始日期 and 日期<=结束日期
group by 编号) b,
(select 编号,count(通知单号) as c.质量数 from 质量
where 日期>=起始日期 and 日期<=结束日期
group by 编号) c
where a.编号*=b.编号 and a.编号*=c.编号
order by a.编号,a.说明
 
楼上的 查询, 我不知道 会不会 把 后台 累S

但, 看来, 是可行的了.
 
select a.编号,a.说明,count(b.不合格号),count(c.通知单号) from 资料 a,验收 b,质量 c where
a.编号=b.编号 and a.编号=b.编号 group by a.编号,b.不合格号,c.通知单号
======================
去掉这些!!
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部