注册 登录
编程论坛 VFP论坛

查最近6个月的病假情况

tjdeming 发布于 2023-05-20 07:23, 766 次点击
有个数据表,数据是动态追加的,想查询最近6个月的病假累计数超过50天的人。
用vfp6.0  sele xm,sum(bj) as bj from gg where sum(bj)>50 and (rq>20221 and rq<=202304) grou by xm 命令,提示"sum.prg"不存在。
请问老师如何做到能动态查询最近6个月的病假情况。谢谢!
只有本站会员才能查看附件,请 登录
6 回复
#2
sdta2023-05-20 08:12
sele xm,sum(bj) as bj from gg where sum(bj)>50 and (rq>20221 and rq<=202304) grou by xm
试试
sele xm,sum(bj) as bj from gg where between(rq, 202211,202304) grou by xm having sum(bj)>50
#3
tjdeming2023-05-20 11:53
回复 2楼 sdta
试试成了,谢谢你,高手!!!

根据当前年月自动计算前6个月的病假超50天吗?随着数据的追加,到了6月份计算202212至202305之间数据,到了7月份计算202301至202306之间的数据,这样能做到自动计算吗?
谢谢!
#4
sdta2023-05-20 12:16
可以
以当前月作为基准,向后倒退5个月即可,
#5
tjdeming2023-05-20 12:56
回复 4楼 sdta
当前月不算
程序代码:
****用以下代码确定当前月份的前一个月

if month(date())<10
  tt="0"+allt(str(month(date())-1))
else
  tt=str(month(date()))
endif
am=str(year(date()))+tt
?am

确定前6个月的代码,如何写?请教一下 谢谢!
#6
sdta2023-05-20 13:43
当前月份的后一个月,也就是基准月份
?GOMONTH(DATE(), -1)
当前月份的后七个月,也就是你说的六个月
?GOMONTH(DATE(), -7)
#7
tjdeming2023-05-20 14:15
回复 6楼 sdta
按你的方法,模仿
程序代码:
y=val(left(dtoc(GOMONTH(DATE(), -1),1),6))
yy=val(left(dtoc(GOMONTH(DATE(), -6),1),6))
sele xm,sum(bj) as bj from gg where between(rq, yy,y) grou by xm having sum(bj)>50

可以查询出最近6个月超50天的人员
谢谢你帮我解决了问题.
1