我要再问! 100分,在线等

blue_apple 2005-03-15 09:42:00
有表T
月份    编号   欠费  总金额
200411   001    2.3   200
200412   001    2.8   210
200501   001    3.0   220
200411   002    0    100
200412   002    0    310
200501   002    4.0   260
200411   003    0    200
200412   003    2.8   500
200501   003    2.0   300

我想找出连续欠费两个月或两个月以上的记录,记录取最后一个月的
即想得到下面的记录
月份  编号   欠费  总金额
200501   001    3.0   220
200501   003    2.0   300
...全文
126 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_apple 2005-04-23
  • 打赏
  • 举报
回复
但速度慢了
Night_Elf 2005-03-15
  • 打赏
  • 举报
回复
hamadou(闵峰) 好强!
hamadou 2005-03-15
  • 打赏
  • 举报
回复
这里假设对应的字段分别是:月份mon(int) ,编号:id(char),欠费:qm(money),总金额:sum(money)

select b.id,max(b.mon)as mon from t as a,t as b
where a.id=b.id and (b.mon-a.mon=1 or b.mon-a.mon=89) and a.qm<>0 and b.qm<>0
group by b.id

说明:使用如上的语句可以得到:

月份  编号  
200501 001   
200501 003  
  
但是,我要说的是,欠费和总金额由于不在分组条件里,也不可能使用聚合函数来求什么,所以通过语句不好得到,你可以把这个结果放入临时表里,然后通过对应的关系从t表里取得相应的欠费和总金额,然后更新到临时表里去。那么临时表就是你最终的结果!
心情解码 2005-03-15
  • 打赏
  • 举报
回复
:)





--
liuzxit 2005-03-15
  • 打赏
  • 举报
回复
try...

select t2.m,t2.编号,T.欠费,T.总金额 from T,(select max(月份) m,编号,count(*) c from T group by 编号) t2 where T.月份 = t2.m and T.编号=t2.编号 and t2.c > 1
liulxmooo 2005-03-15
  • 打赏
  • 举报
回复
up
jialiang 2005-03-15
  • 打赏
  • 举报
回复
1.取出记录到dataset,Where 欠费>0 sort by 编号,月份
2.程序遍例判断哪个编号有连续两个月的前费记录,同时取出最后一个月的前费记录即可
blue_apple 2005-03-15
  • 打赏
  • 举报
回复
这看也只能这样了
haoco 2005-03-15
  • 打赏
  • 举报
回复
up

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧