一张数据表 r 记录抄表数据(可以理解为电表、水表),一张用户表 u 记录用户信息,r.uId = u.Id 。r表中有本次抄表thisR,上次抄表lastR,前次抄表preR等;u表中有Id,用户名称name等。
每个用户两个月抄一次(每个用户抄表时间不一样,比如5月份抄表的4月份没抄,4月份抄的6月份抄),现在的问题是:
查询出连续两次没有抄到表的用户。好学若饥
谢谢!
每个用户两个月抄一次(每个用户抄表时间不一样,比如5月份抄表的4月份没抄,4月份抄的6月份抄),现在的问题是:
查询出连续两次没有抄到表的用户。好学若饥
谢谢!
from r
where (thisR is null and lastR is null)
or (lastR is null and preR is null)
您这个方法我试了查询的结果也不对,我们的系统是将两次抄表没有抄到的用户做个标记,之前有人用了一种方法,分别查询两次:
select *
FROM u
WHERE EXISTS (SELECT 'X'
FROM r
WHERE r.uId= u.Id
AND thisR IS NULL
AND dateR LIKE '201104%')
AND EXISTS (SELECT 'X'
FROM r
WHERE r.uId = u.Id
AND thisR IS NULL
AND dateR LIKE '201102%'); select *
FROM u
WHERE EXISTS (SELECT 'X'
FROM r
WHERE r.uId= u.Id
AND thisR IS NULL
AND dateR LIKE '201103%')
AND EXISTS (SELECT 'X'
FROM r
WHERE r.uId = u.Id
AND thisR IS NULL
AND dateR LIKE '201101%');
注:每个用户隔一个月抄一次表。因为现在是5月份,所以就在4月和2月或者3月和1月中查询没有抄到表的用户。最后分别将两次查询的用户设置标记。