首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

group by语句如何不出现select语句中的字段

2013-01-18 
group by语句怎么不出现select语句中的字段?举例如下设备表:检修记录id,设备id,检修时间,检修员(检修人不

group by语句怎么不出现select语句中的字段?
举例如下
设备表:
检修记录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语句?

[解决办法]
select a.* from 设备表 a join
(
select 设备id,max(检修时间)最后检修时间 from 设备表 group by 设备id
) b
on a.设备id= b.设备id and a.检修时间 = b.最后检修时间

楼主,预计这个语句的结果就是你要的,请查收
[解决办法]


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



[解决办法]
select a.设备id,a.检修时间,a.检修员 from 设备表 a ,( select 设备id,max(检修时间) as 最后检修时间 from 设备表 group by 设备id) b
where  a.设备id= b.设备id and a.检修时间 = b.最后检修时间

[解决办法]

Select * From 设备表 As a
Where Not Exists(Select 1 from 设备表 As x
Where x.设备id=a.设备id
And x.检修时间>a.检修时间
)

热点排行