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

如何取一组数据中最大的一条记录。

ralphchen 2005-06-22 03:54:57
以字段A分组,取C中最大的记录
假如表结构(字段A,B为varchar型,C为日期型)
A B C
1.1 问题1 2005-1-1
1.1 问题9 2005-1-2
1.2 问题2 2005-2-1
1.3 问题3 2005-1-1
; ; ;
; ; ;
; ; ;
结果是:
A B C
1.1 问题9 2005-1-2
1.2 问题2 2005-2-1
1.3 问题3 2005-1-1
; ; ;
; ; ;
; ; ;
...全文
183 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
paoluo 2005-06-28
那试试这样。
相同的A,为Null的C应该不会超过一条吧。

Select * from TableName A Where C Is Null
Union All
Select * from TableName A Where Not Exists (Select 1 from Tablename Where A=A.A And C>A.C) And Not Exists(Select 1 from Tablename Where A=A.A And C Is Null)
回复
ralphchen 2005-06-28
楼上的可能没有懂我的意思,按照sql server 的默认排序规则,NULL是最小(也就是最前)的时间,我现在要把它当作最大的时间。
回复
zlp321002 2005-06-28
--NULL的日期也能为最大??应该吧NULL踢出掉才对吧!
select a.* from 表 a
where C=(select top 1 c from 表 where A=a.A order by c desc)
回复
ralphchen 2005-06-28
如果c的日期中有NULL,而且他被认为是最大的日期,那该如何实现现case中结果不可以为null
回复
子陌红尘 2005-06-22
select
t.*
from
tabname t
where
not exists(select 1 from tabname where A = t.A and C > t.C)
回复
paoluo 2005-06-22
第一种和风云的效率较高。
回复
paoluo 2005-06-22
Select * from TableName A Where Not Exists (Select 1 from Tablename Where A=A.A And C>A.C)
回复
pbsql 2005-06-22
select t.*
from t,(select a,c=max(c) from t group by a) x
where t.a=x.a and t.c=x.c
回复
paoluo 2005-06-22
Select * from TableName A Inner Join (Select A,Max(C) As C from TableName Group By A)B On A.A=B.A And A.C=B.C
回复
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

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