求各位了!帮我一把!急死我了!这个统计功能如何实现?(200分)

  • 主题发起人 主题发起人 wtb
  • 开始时间 开始时间
W

wtb

Unregistered / Unconfirmed
GUEST, unregistred user!
这个统计功能如何实现?急!

a.dbf :
部门 姓名 级别 执业
1 A级 业余
1 B级 业余
2 A级 业余
2 A级 专业
...

结果:

部门 A级 B级 业余 专业
1 1 1 2
2 2 1 1

能在网格中显示或直接打印结果

一、DBF族数据库 似乎不支持 into temp 到临时表!

新建jjdw表:部门 A级 B级 业余 专业

二、用 update jjdw set A级=(Select count(*) from a where 驾证级别='' A级''and jjdw.部门=a.部门 group by 部门)
提示数据类型不匹配
返回的 count(*) 到底是什么类型?
三、用 select distinct a.fid 部门,
A级= (select case count(*) when 0 then ' ' else convert(char(10), count(*)) end from ta where fid=a.fid and flv='A级'),
B级= (select case count(*) when 0 then ' ' else convert(char(10), count(*)) end from ta where fid=a.fid and flv='B级'),
业余=(select case count(*) when 0 then ' ' else convert(char(10), count(*)) end from ta where fid=a.fid and fdc='业余'),
专业=(select case count(*) when 0 then ' ' else convert(char(10), count(*)) end from ta where fid=a.fid and fdc='专业')
from ta a
DBF族数据库 似乎不支持!

!!!怎么办! 怎么办!怎么办!求各位了!帮我一把!急死我了!
 
access这样做的,但dbf就不知道能否正常,现在我都不用好久了。
select a.部门 ,
sum( iif(a.级别='A级',1,0) ) AS A级 ,
sum( iif(a.级别='B级',1,0) ) AS B级 ,
sum( iif(a.执业='专业',1,0) ) AS 专业 ,
sum( iif(a.执业='业余',1,0) ) AS 业余
form a
group by a.部门

如果dbf不支持可以采用计算字段来实现这种统计,但如果部门很多运算时间会长点。
 
如何采用计算字段来实现这种统计?
我已顾不了运算时间了,
能详细一点吗,谢了!
 
查询部门表作为主表,
加上所要统计的字段(计算字段),
主表字段:部门 ,
主表计算字段:A级 ,B级 ,专业 , 业余
在主表计算字段时根据字段名称和部门来统计相对应的数据,
这是一种速度比较慢的办法。



 
试着做两张表,比较烦的,可却是很灵的
当你在部门表中每增加一个记录时,可用查询语句把指针指向统计表的部门,
再用判断语句修改各字段的值 如:if 部门表.级别=A then 统计表.A:=统计表.A+1 else
当然删除时,也要减1的
 
为方便起见,将字段名用英文注:部门:Dep ,级别:JB ,职业:ZY

Select Dep,A=Count(A),B=Count(B),ZY1=Count(ZY1),ZY2=Count(ZY2) from
(Select Dep,A=Case when JB=A级 then 1 else null end,
B=Case when JB=B级 then 1 else null end,
ZY1=Case when ZY=业余 then 1 else null end,
ZY2=Case when ZY=专业 then 1 else null end from a
) as t
Group by Dep
 
浪里白条的做两个表的方法要注意事务处理,
但还是容易在死机时出现数据不准确的情况,
特别对于dbf数据库就更是这样了.

alps的slq写得很好可惜是sql server的写法,dbf也是不支持的.
 
我明白了 感谢
 
多人接受答案了。
 
后退
顶部