tbwshc

tbw

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  95 Posts :: 8 Stories :: 3 Comments :: 0 Trackbacks

常用链接

留言簿(4)

我参与的团队

搜索

  •  

最新评论

阅读排行榜

评论排行榜

dw_1.find()求符合条件的数据记录,高手帮忙看下
取值条件:
工号= MZGHYYDJ.DJRY
姓名= MZGHYYDJ.DJRYXM
总预约数量=MZGHYYDJ 的记录数
有效预约数量=MZGHYYDJ.ZFRY IS NULL 的记录数
已取号数量= MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL

代码:
For ll_i = 1 to ids_fdmcb.rowcount( )
ls_userbz = ids_fdmcb.object.userbz[ll_i] + '.'
ls_sql = " SELECT A.DJRY,A.DJRYXM,isnull(A.ZFRY,''), isnull(A.MZH,'')"
ls_sql += " FROM "+ls_userbz+"MZGHYYDJ A "
ls_sql += " GROUP BY A.DJRY ,A.DJRYXM"

DECLARE c1 DYNAMIC CURSOR FOR SQLSA;
PREPARE SQLSA FROM :ls_sql;
OPEN DYNAMIC c1 USING :lde_minno,:lde_maxno;
do while true 
fetch c1 into :ls_djry,:ls_djryxm,:lde_zfry,:lde_mzh ;
if sqlca.sqlcode<>0 then
exit;
end if
ll_row = dw_1.find(" djry ='"+ls_djry+"' ",1, dw_1.rowcount( ) )
ll_row1 = dw_1.find(" djry ='"+ls_djry+"' AND zfry='' ",1, dw_1.rowcount( ) )
ll_row2 = dw_1.find(" djry ='"+ls_djry+"' AND zfry='' AND mzh<>'' ",1, dw_1.rowcount( ) )
If ll_row <= 0 then
ll_row = dw_1.insertrow(0)
dw_1.object.djry[ll_row] = ls_djry
dw_1.object.djryxm[ll_row] = ls_djryxm
End If
dw_1.object.zyy[ll_row] = dw_1.object.zyy[ll_row] + 1
dw_1.object.yxyy[ll_row1] = dw_1.object.yxyy[ll_row1] + 1
dw_1.object.yqh[ll_row2] = dw_1.object.yqh[ll_row2] + 1
loop;
close c1;
Next

------解决方案--------------------------------------------------------
太混乱了.
------解决方案--------------------------------------------------------
没看明白
------解决方案--------------------------------------------------------
每个人的解题思路都不太一样,理解别人思路有时候比自己写还难

本身你交待的问题不够明确,要想实现的目的也没有明确,一般是不愿意也没时间去仔细分析的

最好你把要求、目的和遇到的问题写清楚,这样别人也容易帮忙

有时候你在标明语句的用途时,tb自己就能找出问题的所在
------解决方案--------------------------------------------------------
dw_1.object.zyy[ll_row] = dw_1.object.zyy[ll_row] + 1

这种写法,在多人并行运行的时候会出现问题的
------解决方案--------------------------------------------------------
自己的业务逻辑思路没想好。
------解决方案--------------------------------------------------------
工号= MZGHYYDJ.DJRY
姓名= MZGHYYDJ.DJRYXM
总预约数量=MZGHYYDJ 的记录数
有效预约数量=MZGHYYDJ.ZFRY IS NULL 的记录数
已取号数量= MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL


楼主 到底想干嘛。。。看的糊里糊涂啊。。。

如果只是需要查询 上面 这些 数据。。那从 sql 里面直接查询不就是了??算法你基本已明确了。。。
干嘛 在 那里 绕圈。。。又是游标 又是 dw的。。。。

如果你想实现 查询每个员工的 工号,姓名,总预约数量,有效预约数量,已取号数量 就使用子查询。。在 sql里面。。。

select a.工号,a.姓名,a.总预约数量,b.有效预约数量,c.已取号数量
from 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 总预约数量
from MZGHYYDJ
group by DJRY,DJRYXM) a
 left join 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 有效预约数量
from MZGHYYDJ
and MZGHYYDJ.ZFRY IS NULL
group by DJRY,DJRYXM) b
on a.DJRY=b.DJRY and a.DJRYXM=b.DJRYXM
 left join 
(select MZGHYYDJ.DJRY 工号,MZGHYYDJ.DJRYXM 姓名,count(*) 已取号数量
from MZGHYYDJ
and MZGHYYDJ.ZFRY IS NULL AND MZGHYYDJ.MZH IS NOT NUL
group by DJRY,DJRYXM) c
on a.DJRY=c.DJRY and a.DJRYXM=c.DJRYXM


------解决方案--------------------------------------------------------
确实没看明白。。加点注释吧。。
posted on 2012-09-08 13:34 tbwshc 阅读(419) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理