日期:2014-05-19  浏览次数:20736 次

请教一SQL语句写法,找出符合要求的记录,内详.
字段:ID\部门\车站\设备名称\设备型号\设备编号\检查人\检查日期
ID为自动编号关键字,部门\设备编号\检查日期可以确定唯一的记录(也就是说同一个部门,同一个设备编号在某一个检查日期只会存在一条记录).
比如现在我想找出该设备编号在最大的检查日期的数据,怎样写SQL语句会方便些.

EquipInfo表如下:
ID\部门\车站\设备名称\设备型号\设备编号\检查人\检查日期
1\第一车间\上海站\变压器\BYQ-1\012\张山\2001-1-1
2\第二车间\上海站\变压器\BYQ-3\011\里四\2002-3-4
3\第二车间\北京站\电阻\DZ-13\146\里四\2006-1-4
4\第二车间\湖动站\变压器\BYQ-3\011\小王\2004-6-4
5\第一车间\上海站\变压器\BYQ-1\012\万二\2003-10-2
6\第一车间\杭州站\电源组\DY-3\123\刘校庆\2003-9-12
7\第一车间\南昌站\电源组\DY-3\123\万发\2005-11-2
需要得到的结果是:
3\第二车间\北京站\电阻\DZ-13\146\里四\2006-1-4
4\第二车间\湖动站\变压器\BYQ-3\011\小王\2004-6-4
5\第一车间\上海站\变压器\BYQ-1\012\万二\2003-10-2
7\第一车间\南昌站\电源组\DY-3\123\万发\2005-11-2

我分成了两步骤解决,先生成临时表temp
SELECT   设备编号,   max(检查日期)   AS   最近检查日期   INTO   temp
FROM   status
GROUP   BY   部门,   器材编号
第二
SELECT   EquipInfo.*
FROM   EquipInfo,   temp
WHERE   EquipInfo.部门=temp.部门   and   EquipInfo.设备编号=temp.设备编号   and   EquipInfo.检查日期=temp.最近检查日期

能否一步搞定???如何解决


------解决方案--------------------
--try

SELECT EquipInfo.*
FROM EquipInfo,
(SELECT 设备编号, max(检查日期) AS 最近检查日期 INTO temp
FROM status
GROUP BY 部门, 器材编号)
temp
WHERE EquipInfo.部门=temp.部门 and EquipInfo.设备编号=temp.设备编号 and EquipInfo.检查日期=temp.最近检查日期