主题:  如何查询这样数据

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#12005/3/27 21:42:33
气象局有很多的气象站,各气象站日测数据均记录在一个数据表中,我想查询所有站的最新测量记录(每站仅一条),这个查询语句怎么写。

WeatherID:ID号
StationID:气象站号
WindV:风力
......
RecTime:记录日期时间


非常大鱼

蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22005/3/27 22:04:45
好辛苦,终于我用了这样的查询,有点难看懂

SELECT * FROM Weather a
WHERE RecTime IN
    (SELECT MAX(b.RecTime) AS LastRecTime FROM Weather b
    GROUP BY b.StationID HAVING a.StationID = b.StationID)


SELECT * FROM Weather a
WHERE RecTime IN
    (SELECT Distinct MAX(b.RecTime) AS LastRecTime FROM Weather b
    GROUP BY b.StationID HAVING a.StationID = b.StationID)

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2005-03-27 22:10:00)]

非常大鱼

缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#32005/3/28 8:53:56
似乎和我之前的一个查询差不多.不过看起来我这个写的复杂了一些.
我是从一个表中(ppgameuser)查出每个游戏的最高得分者.

CREATE   PROCEDURE spOrderAllGame
AS
begin
SELECT * INTO #mytbl FROM ppgameuser p,games g WHERE p.GamesID = g.gameid

SELECT gamesid, MAX(source) AS max_cost 
    INTO #mytemp 
    FROM ppgameuser
        GROUP BY gamesid
        HAVING (COUNT(*) > 1) 
DELETE #mytbl FROM #mytemp, #mytbl WHERE #mytbl.GamesID = #mytemp.GamesID AND #mytbl.source <> #mytemp.max_cost

select top 10 u.username as UNM,GameID,GameName from #mytbl t,users u WHERE t.username = u.username ORDER BY GamesID DESC
end
GO



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42005/3/28 9:16:17
缺缺是把数据先存入临时表中吧,看来简单的查询还不简单。
我原先老考虑Distinct,但好象没用。


非常大鱼