• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

■■■两个表连接 求得60天差记录的SQL语句■■■

fanqingfeng 2005-03-02 11:08:51
客户表 Cilent:

CID(客户编号) CNAME(客户名称) RTIME(注册时间)
----------------------
1001 张三 2004-11-12 15:25:23
1002 李四 2004-11-15 23:56:14
1003 王五 2004-11-23 12:20:33
1004 刘六 2004-12-1 11:55:20
。。。。

客户登陆记录表 Log:
LTIME(登陆时间) CID(客户编号) IP(登陆IP)
-----------------------
2005-1-1 12:35:58 1001 192.168.168.1
2005-1-1 12:46:20 1001 192.168.168.22
2005-2-1 15:14:33 1003 202.116.11.11
2005-2-2 22:20:40 1001 210.22.56.22
。。。。。

我想得到的结果是:
距今天至少有60天没有登陆的用户记录,注册时间当作是第一次登陆

CID(用户编号) CNAME(客户名称)
-----------------------



谢谢






...全文
91 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hsj20041004 2005-03-02
select C.cid,C.cname from (select A.cid,min(A.cname),isnull(max(B.LTIME),max(rtime)) maxtime from cilent A left join log B on A.cid=B.cid group by cid) C
where datediff(d,C.maxtime,getdate())>60
回复
xluzhong 2005-03-02
select cid,cname
from(
select a.cid,a.cname,a.rtime,b.ltime
from client a
left join (select cid,max(ltime) as ltime from log group by cid) b
on a.cid=b.cid)t
where datediff(d,isnull(ltime,rtime),getdate())>60
回复
子陌红尘 2005-03-02
select
a.*
from
Cilent a
where
not exists(select 1 from Log where cid = a.cid and datediff(d,LTIME,getdate())<=60)
回复
tomorrowMoon 2005-03-02
select *
from Client
where datediff(day,
isnull((select max(LTIME) from log where CID=Client.CID),RTIME),
getdate())>60
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2005-03-02 11:08
社区公告
暂无公告