group by语句怎么不出现select语句中的字段?

xbrave 2013-01-12 12:00:43
举例如下
设备表:
检修记录id,设备id,检修时间,检修员(检修人不固定)
select 设备id,max(检修时间)最后检修时间 from 设备表 group by 设备id。
得出这样的结果
设备1,最后检修时间
设备2,最后检修时间
设备3,最后检修时间

我想要的是结果是(带最后一次检修的检修员):
设备1,最后检修时间,张三
设备2,最后检修时间,李四
设备3,最后检修时间,王五

如果这样写语句:select 设备id,max(检修时间)检修时间,检修员 from 设备表 group by 设备id,检修员。结果是:如果李四也检修过设备1,就会把李四的最后一次检修的设备1也列出来。设备1就出现两个最后检修时间,显然不是我想要的。怎样写SQL语句?
...全文
773 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xbrave 2013-01-13
  • 打赏
  • 举报
回复
谢谢各位。
Paddy 2013-01-12
  • 打赏
  • 举报
回复
select a.* from 设备表 a join ( select 设备id,max(检修时间)最后检修时间 from 设备表 group by 设备id ) b on a.设备id= b.设备id and a.检修时间 = b.最后检修时间 楼主,预计这个语句的结果就是你要的,请查收
我腫了 2013-01-12
  • 打赏
  • 举报
回复

Select * From 设备表 As a
Where Not Exists(Select 1 from 设备表 As x
					Where x.设备id=a.设备id
						And x.检修时间>a.检修时间
			)
dong_y888 2013-01-12
  • 打赏
  • 举报
回复
select a.设备id,a.检修时间,a.检修员 from 设备表 a ,( select 设备id,max(检修时间) as 最后检修时间 from 设备表 group by 设备id) b
where  a.设备id= b.设备id and a.检修时间 = b.最后检修时间
美到心痛 2013-01-12
  • 打赏
  • 举报
回复

select 设备id,检修时间 最后检修时间,检修员 
 from 设备表  as a
where 检修时间=(select max(检修时间) from 设备表 as b where b.设备id=a.设备id  )


27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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