求更完美的SQL

今天公司老大叫我写一个查询语句,需求如下: 查出所有站最近时间的水位(z),站码(STCD),X坐标(LGTD),Y坐标(LTID),站名(STNM),时间(TM). 所需表结构: ST_STBPRP_B: STCD char 8 0 STNM nvarchar 30 0 RVNM nvarchar 30 1 HNNM nvarchar 30 1 BSNM nvarchar 30 1 LGTD char 7 1 LTTD char 6 1 STLC nvarchar 30 1 ADDVCD char 6 1 ST_RIVER_R: STCD char 8 0 TM datetime 8 0 Z float 8 1 Q float 8 1 两表关系:ST_STBPRP_B与ST_RIVER_R通过STCD字段一对多关联,ST_STBPRP_B为主表。 思考了半天,写出了如下的二种SQL语句,虽然找出的结果符合需求,但总感觉不爽,现把SQL语句贴出来,希望高手进来指点一二,不胜感激。  一种方案: SELECT zuo.stcd, zuo.stnm, zuo.LGTD, zuo.LTTD, zuo.tm, s_r.Z FROM ST_RIVER_R s_r right join (SELECT st.stcd, st.stnm, st.LGTD, st.LTTD, MAX(st_r.tm) as tm FROM St_River_R st_r right OUTER JOIN St_Stbprp_B st ON st_r.stcd = st.stcd GROUP BY st.stcd, st.stnm, st.LGTD, st.LTTD) zuo on s_r.tm = zuo.tm and s_r.stcd=zuo.stcd  第二种方案: select a.stcd,a.stnm,a.lgtd,a.lttd, m.tm,m.z from St_Stbprp_B a left join (select x.stcd,x.z,x.tm from st_river_r x, (select st.stcd , max(st.tm) as tm from st_river_r st group by st.stcd) c where x.stcd=c.stcd and x.tm=c.tm) m on a.stcd=m.stcd
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值