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

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
; ; ;
; ; ;
; ; ;
...全文
214 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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