求SQL,分类查询语句,写法!

l171147904 2012-04-23 04:22:56
表:
ID,类型,时间,其它

1 A 2012-04-23 18:00:00
2 A 2012-04-24 18:00:00
3 A 2012-04-25 18:00:00
5 B 2012-04-23 18:00:00
6 B 2012-04-24 18:00:00
7 C 2012-04-25 18:00:00
8 C 2012-04-23 18:00:00


我要按分类查询,得到 A,B,C中,时间最大的记录各1条。

我要的结果:

3 A 2012-04-25 18:00:00
6 B 2012-04-24 18:00:00
7 C 2012-04-25 18:00:00

这语法这么写?
...全文
63 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr_Nice 2012-04-23
  • 打赏
  • 举报
回复
;with TT
as(select ROW_NUMBER() over(PARTITION by 类型 order by 时间 desc )as nn ,* from TB)

select ID,类型,时间 from TT where nn = 1
了解 2012-04-23
  • 打赏
  • 举报
回复
select 类型,max(时间) from 表名 group by 类型
十三门徒 2012-04-23
  • 打赏
  • 举报
回复
select A.* from (select 类型,max(时间),其它 from table group by 类型,其它)b join a on a.类型=b.类型 and a.时间=b.时间 and a.其它=b.其它
Mr_Nice 2012-04-23
  • 打赏
  • 举报
回复
if object_id('[TB]') is not null drop table [TB]
go
create table [TB] (ID int,类型 nvarchar(2),时间 datetime,其它 sql_variant)
insert into [TB]
select 1,'A','2012-04-23 18:00:00',null union all
select 2,'A','2012-04-24 18:00:00',null union all
select 3,'A','2012-04-25 18:00:00',null union all
select 5,'B','2012-04-23 18:00:00',null union all
select 6,'B','2012-04-24 18:00:00',null union all
select 7,'C','2012-04-25 18:00:00',null union all
select 8,'C','2012-04-23 18:00:00',null

select * from [TB]


select distinct B.ID,B.类型,B.时间
from TB A
cross apply(select top 1 ID,类型,时间 from TB where 类型 = A.类型 order by 时间 desc) B


/*
3 A 2012-04-25 18:00:00.000
6 B 2012-04-24 18:00:00.000
7 C 2012-04-25 18:00:00.000*/
孤独加百列 2012-04-23
  • 打赏
  • 举报
回复

select 类型,
时间
from 表 t
where id in(select top 1 id from 表 where 类型=t.类型 order by 时间 desc)

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧