一个表名: 会员列表ID 名称
1 张三
2 李四
3 王五
第二个表 :上网记录ID 名称 开始上网时间 上网时长
1 张三 2014-01-01 16:30:00 10
2 李四 2014-01-02 16:40:00 20
3 张三 2014-01-03 16:30:00 30
4 李四 2014-01-04 16:40:00 40想找出每个会员的最后上网时间记录
会员最后上网记录
名称 开始上网时间 上网时长
张三 2014-01-03 16:30:00 30
李四 2014-01-04 16:40:00 40
王五 null null
1 张三
2 李四
3 王五
第二个表 :上网记录ID 名称 开始上网时间 上网时长
1 张三 2014-01-01 16:30:00 10
2 李四 2014-01-02 16:40:00 20
3 张三 2014-01-03 16:30:00 30
4 李四 2014-01-04 16:40:00 40想找出每个会员的最后上网时间记录
会员最后上网记录
名称 开始上网时间 上网时长
张三 2014-01-03 16:30:00 30
李四 2014-01-04 16:40:00 40
王五 null null
-- Author :DBA_HuangZJ(發糞塗牆)
-- Date :2014-08-08 16:36:52
-- Version:
-- Microsoft SQL Server 2012 - 11.0.5058.0 (X64)
-- May 14 2014 18:34:29
-- Copyright (c) Microsoft Corporation
-- Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
--
----------------------------------------------------------------
--> 测试数据:[上网记录]
if object_id('[上网记录]') is not null drop table [上网记录]
go
create table [上网记录]([ID] int,[名称] varchar(4),[开始上网时间] datetime,[上网时长] int)
insert [上网记录]
select 1,'张三','2014-01-01 16:30:00',10 union all
select 2,'李四','2014-01-02 16:40:00',20 union all
select 3,'张三','2014-01-03 16:30:00',30 union all
select 4,'李四','2014-01-04 16:40:00',40
--> 测试数据:[会员列表]
if object_id('[会员列表]') is not null drop table [会员列表]
go
create table [会员列表]([ID] int,[名称] varchar(4))
insert [会员列表]
select 1,'张三' union all
select 2,'李四' union all
select 3,'王五'
--------------开始查询--------------------------select *
from [会员列表] a LEFT JOIN (
select 名称,MAX(DATEADD(HOUR,上网时长,开始上网时间))最后上网时间
from [上网记录]
GROUP BY 名称)b ON a.名称=b.名称
----------------结果----------------------------
/*
ID 名称 名称 最后上网时间
----------- ---- ---- -----------------------
1 张三 张三 2014-01-04 22:30:00.000
2 李四 李四 2014-01-06 08:40:00.000
3 王五 NULL NULL
*/
select a.名称,b.开始上网时间,b.上网时长
from 会员列表 a
join (select * from 上网记录 a
where not exists( select 1 from 上网记录 where 名称=a.名称
and 开始上网时间>a.开始上网时间 )) b
on a.名称=b.名称
SELECT 名称 FROM 会员列表 AS a
LEFT JOIN (
SELECT 名称,MAX(开始上网时间) AS 最后上网时间 FROM 上网记录 GROUP BY 名称
) AS b
ON a.ID = b.ID