sql语句为: select name,address,date from a
结果为:
name address date
张三 上海 2009-08-01
张三 北京 2008-08-03
李四 河南 2006-01-02
李四 河北 2007-05-02
如何更改上面的sql语句查询出结果为:
name address date
张三 北京 2008-08-03
李四 河北 2007-05-02
首先声明where条件中不允许加入时间段的限制
结果为:
name address date
张三 上海 2009-08-01
张三 北京 2008-08-03
李四 河南 2006-01-02
李四 河北 2007-05-02
如何更改上面的sql语句查询出结果为:
name address date
张三 北京 2008-08-03
李四 河北 2007-05-02
首先声明where条件中不允许加入时间段的限制
解决方案 »
- 关于Xtreme SuitePro与ArcGIS 10的问题
- 尝试读取或写入受保护的记忆体,这通常表示其他记忆体已损毁。
- 找不到类型或命名空间名称“TreeNode”(是否缺少 using 指令或程序集引用?)
- **************如何读取mp3类型歌曲的"持续时间"这个属性**********
- Visual studio.net 2005问题
- 刚接触c#,几乎什么都不懂,希望大家能帮我解决一个问题?
- [求助]C#如何利用http协议多线程上传大文件
- 请问学习C#有什么好的书籍?
- 大家帮我看看这个图片上传成功了没有!
- C# Socket服务器和客户端通信问题!!!
- C# 字符串转换16进制问题(相求)
- ss 赋值时 , 是相当于指针指向 cc , 还是新申请一块内存,再把cc的值复制过来?
name address date
张三 上海 2009-08-01
李四 河北 2007-05-02
select a.* from a
join a b
on a.name=b.name
where a.date>b.date
declare @t table([name] varchar(50), [address] varchar(50), [date] varchar(50) )
insert into @t select '张三','上海','2009-08-01'
union all select '张三','北京','2008-08-03'
union all select '李四','河南','2006-01-02'
union all select '李四','河北','2007-05-02' select name,address,date from @t
name address date
张三 上海 2009-08-01
张三 北京 2008-08-03
李四 河南 2006-01-02
李四 河北 2007-05-02
select name,address,date from @t where date in(select MIN(date) from @t group by [name])name address date
张三 北京 2008-08-03
李四 河南 2006-01-02
from (select name,max([date]) D1 from a group by Name) t1
inner join a t2 on t1.name=t2.name and t1.d1=t2.[date]
declare @t table([name] varchar(50), [address] varchar(50), [date] varchar(50) )
insert into @t select '张三','上海','2009-08-01'
union all select '张三','北京','2008-08-03'
union all select '李四','河南','2006-01-02'
union all select '李四','河北','2007-05-02' select name,address,date from @t name address date
张三 上海 2009-08-01
张三 北京 2008-08-03
李四 河南 2006-01-02
李四 河北 2007-05-02
select name,address,date from @t where date in(select max(date) from @t group by [name])name address date
张三 上海 2009-08-01
李四 河北 2007-05-02
declare @a table(name char(8), address char(8),date datetime)
insert into @a
select '张三','上海','2009-08-01' union all
select '张三','北京','2008-08-03' union all
select '李四','河南','2006-01-02' union all
select '李四','河北','2007-05-02'
select a.* from @a a
join @a b
on a.name=b.name
where a.date>b.date /*
张三 上海 2009-08-01 00:00:00.000
李四 河北 2007-05-02 00:00:00.000 */
group by name,address
select [name],address,date from a where date in(select MAX(date) from a group by [name])
这个做法有问题,当增加一列 张三的日期和李四的最大日期一样就会出问题
select a.* from @t a
join @t b
on a.name=b.name
where a.date>b.date
这个做法也不对,因为存在多条记录的时候只会去掉最小的记录
select a.* from @t a
join
(select [name],MAX(date) as [date] from @t group by [name]) b
on a.name=b.name where a.date=b.date这个应该是正确的做法,前提是name列加上date列是唯一的
name address date
张三 上海2009-08-01
张三 北京2008-08-03
李四 河南2006-01-02
李四 河北2007-05-02
select name,address,datefrom@twhere datein(selectMIN(date)from@tgroupby[name])name address date
张三 北京2008-08-03
李四 河南2006-01-02这个做法有问题,当增加一列 张三的日期和李四的最大日期一样就会出问题
select a.* from @t a
join @t b
on a.name=b.name
where a.date>b.date
这个做法也不对,因为存在多条记录的时候只会去掉最小的记录
select a.* from @t a
join
(select [name],MAX(date) as [date] from @t group by [name]) b
on a.name=b.name where a.date=b.date这个应该是正确的做法,前提是name列加上date列是唯一的
[/Quote]