取值条件:
工号= 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
------解决方案--------------------
太混乱了.
------解决方案--------------------
没看明白
------解决方案--------------------
每个人的解题思路都不太一样,理解别人思路有时候比自己写还难
本身你交待的问题不够明确,要想实现的目的也没有明确,一般是不愿意也没时间去仔细分析的
最好你把要求、目的和遇到的问题写清楚,这样别人也容易帮忙
有时候你在标明语句的用途时,自己就能找出问题的所在
------解决方案--------------------
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
------解决方案--------------------
确实没看明白。。加点注释吧。。