有登录日志表 表里有id,loginTime
看到这个问题的第一眼就是case when ,但是以本人的sql水平只能写出这样的sql了。
select t.ID,t
COUNT(*)
from
t_login_log t
where
DATEDIFF(SYSDATE(),t.loginTime)<7
GROUP BY t.ID
HAVING COUNT(*)>2
求帮助啊!
解决方案
90
你的a、b的数据有问题,a里面都没有oid为1的数据,你在结果集是怎么会有1的结果呢?
下面这个代码,应该可以:
下面这个代码,应该可以:
select a.oid, case when count(case when status=1 then 1 end) >=1 then "S" when count(case when DATEDIFF(SYSDATE(),a.Time)<30 then 1 end) >=1 then "A" when count(case when DATEDIFF(SYSDATE(),a.Time)<60 then 1 end) >=1 then "B" when count(case when DATEDIFF(SYSDATE(),a.Time)<60 then 1 end) =0 then "C" else "E" end lev from a left join b on a.oid=b.oid where DATEDIFF(SYSDATE(),a.time)<61 GROUP BY a.oid;