我有一张表,里面有如下测试数据
declare @t table (recordId int identity(1,1) primary key,
person varchar(10) null,
date datetime null)
insert into @t values('001','2006-1-1')
insert into @t values('001','2006-1-2')
insert into @t values('002','2006-1-4')
insert into @t values('002',null)
insert into @t values('003','2006-1-10')
insert into @t values('004',null)现在我的需求是根据person去选一条记录,记录的要求是针对具体某一个person的
话,若是date中有存在null的记录,则直接把date为null的那条记录选出来,而不管
它们中是否还有其它记录;否则,选出该person对应的记录中date最大的那条记录如对001 则有
person maxdate
002 2006-1-2如对002 则有
person maxdate
002 null
对004 则有
person maxdate
004 null
要求用一条sql语句搞定,里面可以用子查询或其它方法等,只要是一条语句就行
请各位帮帮忙,谢谢!
declare @t table (recordId int identity(1,1) primary key,
person varchar(10) null,
date datetime null)
insert into @t values('001','2006-1-1')
insert into @t values('001','2006-1-2')
insert into @t values('002','2006-1-4')
insert into @t values('002',null)
insert into @t values('003','2006-1-10')
insert into @t values('004',null)现在我的需求是根据person去选一条记录,记录的要求是针对具体某一个person的
话,若是date中有存在null的记录,则直接把date为null的那条记录选出来,而不管
它们中是否还有其它记录;否则,选出该person对应的记录中date最大的那条记录如对001 则有
person maxdate
002 2006-1-2如对002 则有
person maxdate
002 null
对004 则有
person maxdate
004 null
要求用一条sql语句搞定,里面可以用子查询或其它方法等,只要是一条语句就行
请各位帮帮忙,谢谢!
更正如下:
如对001 则有
person maxdate
001 2006-1-2
Select person from @t where person=a.person
group by person
having max(isnull(date,'9999-12-31'))=isnull(a.date,'9999-12-31'))
then NULL else convert(varchar(10),max(Date),120) end)
from @t group by person
结帖