| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 750 人关注过本帖
标题:继续请教统计报表的问题
取消只看楼主 加入收藏
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
继续请教统计报表的问题
之前,就统计报表问题发过数个帖子求助,得到多位热心朋友的解答。现在又遇到问题,再次请教:
想按企业规模进行分类统计,表(qyjbxxb.dbf)中没有设置相应字段,需要通过分析表中的zgrs(从业人员人数)和ncz(销售收入)两个字段值进行分类,我用条件选择语句写的代码如下:
程序代码:
private qygm
select qyjbxxb
do case
  case zgrs<20.and.ncz<300
      qygm='微型企业'
  case 20<=zgrs<300.and.300<=ncz<2000
  qygm='小型企业'
  case 300<=zgrs<1000.and.2000<=ncz<40000
  qygm='中型企业'
  case zgrs>=1000.and.ncz>=40000
  qygm='大型企业'
endcase
现在想用此数据代替下图中第一列的记录数据,列表头为“企业规模”,用SQL查询语句该如何实现?
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 统计 private color 
2013-03-04 12:12
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 3楼 sdta
谢谢!
之后在数据录入界面会设置相关字段值不能为空的限制。

另外,这段代码还是没弄明白:
 INNER JOIN QYJJLXK ;
  ON QYJBXXB.JJLX=QYJJLXK.JJLX ;
这里哪有用到QYJJLXK表,为什么要关联这个表呢?


[ 本帖最后由 陶然愚者 于 2013-3-5 08:01 编辑 ]
2013-03-05 07:40
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
问题解决。此段代码可以不要。谢谢S版主。完整代码如下:
程序代码:
CREATE CURSOR QYGM (企业规模 C(8),人数1 I,人数2 I,产值1 I,产值2 I)
INSERT INTO QYGM VALUES ([微型企业],0,20,0,300)
INSERT INTO QYGM VALUES ([小型企业],20,300,300,2000)
INSERT INTO QYGM VALUES ([中型企业],300,1000,2000,40000)
INSERT INTO QYGM VALUES ([大型企业],1000,999999,40000,999999999)

SELECT QYGM.企业规模 企业规模,CAST(COUNT(distinct Qyzycpk.jgmc) AS N(4)) 企业数,;
  CAST(COUNT(QYZYCPK.ZYCP) AS N(4)) 产品数,;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[1],1,0)) AS N(4)) 国标,;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[2],1,0)) AS N(4)) 行标,;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[3],1,0)) AS N(4)) 地标,;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[4],1,0)) AS N(4)) 企标,;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[5],1,0)) AS N(4)) 协议,;
  ROUND((CAST(SUM(IIF(QYZYCPK.BZDJ=[1],1,0)) AS N(4))+CAST(SUM(IIF(QYZYCPK.BZDJ=[2],1,0)) AS N(4))+;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[3],1,0)) AS N(4))+CAST(SUM(IIF(QYZYCPK.BZDJ=[4],1,0)) AS N(4))+;
  CAST(SUM(IIF(QYZYCPK.BZDJ=[5],1,0)) AS N(4)))/(CAST(COUNT(QYZYCPK.ZYCP) AS N(4)))*100,2) 标准覆盖率 ;
  FROM QYJBXXB ;
  INNER JOIN QYZYCPK ON Qyjbxxb.jgdm = Qyzycpk.jgdm ;
  INNER JOIN QYGM ;
  ON (QYJBXXB.ZGRS>=QYGM.人数1 AND QYJBXXB.ZGRS<QYGM.人数2) AND (QYJBXXB.NCZ>=QYGM.产值1 AND QYJBXXB.NCZ<QYGM.产值2) ;
  GROUP BY QYGM.企业规模 INTO CURSOR TEMP READWRITE
INSERT INTO TEMP SELECT [合计],SUM(企业数),SUM(产品数),SUM(国标),SUM(行标),SUM(地标),SUM(企标),SUM(协议),;

 ROUND((SUM(国标)+SUM(行标)+SUM(地标)+SUM(企标)+SUM(协议))/SUM(产品数)*100,2) FROM TEMP
GO TOP
WITH THISFORM.GRID1
   .COLUMNCOUNT=FCOUNT([TEMP])
   .RECORDSOURCE=[TEMP]
   FOR I=1 TO .COLUMNCOUNT
       WITH .COLUMNS(I)
          .WIDTH=IIF(I=1,168,IIF(i=thisform.grid1.columncount,100,48))
          .HEADER1.CAPTION=FIELD(I)
          .HEADER1.ALIGNMENT=2
          .Resizable=.F.
       ENDWITH
   ENDFOR
ENDWITH
SET DATE YMD
thisform.text1.Value=date()
运行结果界面如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

2013-03-05 08:31
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
此程序代码有一个缺陷,就是参与统计或计算的字段值有空值时会发生错误。
2013-03-05 08:36
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
仔细看看,还是有一个问题:“在从业人数、销售收入两个条件中有一个条件未达标时,下调一档”这个目标没有能够实现。比如其中有一个企业,人数为30人,销售收入为200万元,本应该统计到“微型企业”档,可程序运行结果是此企业没有参与统计。

按照国家统计局的统计口径要求,大、中、小型企业必须同时满足两个条件,否则下调一档;微型企业满足其中一个条件即可。

[ 本帖最后由 陶然愚者 于 2013-3-5 08:55 编辑 ]
2013-03-05 08:49
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
回复 8楼 sdta
就是数据表中如经济行业、经济类型、职工人数、销售收入等参与统计的字段出现空值时,系统会提示出错。
2013-03-05 08:51
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
9楼问题解决。将程序段中以下一段代码
 ON (QYJBXXB.ZGRS>=QYGM.人数1 AND QYJBXXB.ZGRS<QYGM.人数2) AND (QYJBXXB.NCZ>=QYGM.产值1 AND QYJBXXB.NCZ<QYGM.产值2) ;
改为以下代码:
  ON ((QYJBXXB.ZGRS>=QYGM.人数1 and QYJBXXB.ZGRS<QYGM.人数2) and (QYJBXXB.NCZ>=QYGM.产值1 and QYJBXXB.NCZ<QYGM.产值2)) ;
  OR ((qyjbxxb.zgrs>=qygm.人数2 AND qyjbxxb.ncz<qygm.产值2) OR (qyjbxxb.ncz>=qygm.产值2 AND qyjbxxb.zgrs<qygm.人数2)) ;

不知对否?请S版指教。
2013-03-05 09:44
陶然愚者
Rank: 1
等 级:新手上路
帖 子:151
专家分:8
注 册:2012-12-13
收藏
得分:0 
另外,销售收入似乎应该允许非整型数值出现更合理。是否可将类型(I)改为类型(N)?
2013-03-05 11:16
快速回复:继续请教统计报表的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016955 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved