当前位置: 代码迷 >> Sql Server >> 怎么查出值最大的列所对应的时间列
  详细解决方案

怎么查出值最大的列所对应的时间列

热度:8   发布时间:2016-04-24 10:03:11.0
如何查出值最大的列所对应的时间列?
如题,我要实现的效果是这样的。


有一个最高水位和最低水位,其中最高水位和最低水位时按月去分的,也就是1,2,3,4月的最高水位或者最低水位。
其中有最高水位和最低水位分别有一个时间列对应上,如果最高水位相同的话,那么取最新的一条记录。
请问这个怎么做啊,我把表结构图发给大家。


其中STCD为测站编码,就是相当于主键,一个测站可以有很多条记录,不同的日期,TM就是时间,
RZ就是水位了。
我开始时这么写的,但是写错了。

select b.STCD,b.STNM,MAX(r.RZ) hightez,MAX(r.TM) hztm,MIN(r.RZ) lowestz,MIN(r.TM) lztm from  ST_RSVR_R r,ST_STBPRP_B b where r.STCD=b.STCD 
and MONTH(r.tm)=8 and  MONTH(r.tm)=8 and YEAR(r.tm)=2014
group by b.STNM,b.STCD


求求大神帮忙啊,我想了一下午不知道怎么搞!
------解决方案--------------------

--修正如下:
SELECT b.STCD,b.STNM ,c.*,d.*
FROM ST_STBPRP_B b
CROSS APPLY
(
SELECT TOP 1 RZ hightez,TM hztm 
FROM ST_RSVR_R 
WHERE  STCD = b.STCD AND MONTH(tm) = 8 AND YEAR(tm) = 2014
ORDER BY RZ DESC,TM DESC
) c
CROSS APPLY
(
SELECT TOP 1 RZ hightez,TM lztm 
FROM ST_RSVR_R 
WHERE  STCD = b.STCD AND MONTH(tm) = 8 AND YEAR(tm) = 2014
ORDER BY RZ ASC,TM DESC
) d
  相关解决方案