我有一张这样的table
value | date | station with various values for example :
valor_observado | data_observacao | estacao
14 2020-01-18 X
15 2020-01-19 X
16 2020-01-20 X
1 2020-01-18 Y
2 2020-01-19 Y
3 2020-01-20 Y
我想做一个以日期作为输入的存储过程,它给我最大的值,日期和站。在本例中,输入“2020-01-18”的结果将是
data_observacao | valor_observado | estacao
2020-01-18 14 X
我创建了这样一个存储过程,但它不起作用(没有显示任何内容):
CREATE PROC PRECIPITACAO_MAXIMA_DATA @data date AS
select data_observacao=@data , maximo_precipitacao,estacao
from WEATHER_STATION.Precipitacao
inner join
(select data_observacao= @data ,max(valor_observado) as maximo_precipitacao
from WEATHER_STATION.Precipitacao) a
on a.data_observacao = WEATHER_STATION.Precipitacao.data_observacao AND a.maximo_precipitacao = valor_observado
GO
结果是:
data_observacao | valor_observado | estacao
2条答案
按热度按时间hpxqektj1#
考虑使用行限制查询:
这只是选择所有
data_observacao
匹配给定的@data
参数,按降序排序valor_observacao
,并仅保留第一行。oprakyz72#
我假设您使用的是基于语法的sqlserver。
您可以使用以下工具做您想做的事情:
在大多数其他数据库中,可以使用
limit
或者fetch first 1 row only
.