具有默认值的存储过程

stored procedure with a default value

我有两个表:一个叫做 City (City_id,Name, Latitude, Longitude) 另一个是 Measures (City_id, Measure_Date、温度、湿度、风速、气压)。

City_idCity 中的主键和 Measures 中的外键。 City_idMeasure_date 也是主键。

我正在尝试在 SQL Server 2005 中编写一个存储过程,它允许我计算数据库中特定城市的所有四个测量值的平均值。如果城市在 Measures 中没有记录,我希望默认值为 null。

如何让它为那些城市设置默认值null?谢谢:)

这是我做的代码:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[low_temp]
     @temp real
AS
begin
    select 
        avg(m.temperature), avg(m.humidity), 
        avg(m.windspeed), avg(m.airpressure)
    from 
        city c, measures m 
    where 
        m.city_id = @temp
end

只需使用左连接:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[low_temp]
     @temp real
AS
begin
    select avg(m.temperature), 
           avg(m.humidity), 
           avg(m.windspeed), 
           avg(m.airpressure)
    from city c
    left join measures m ON(c.city_id = m.city_id)
    where 
        c.city_id = @temp
end