具有默认值的存储过程
stored procedure with a default value
我有两个表:一个叫做 City
(City_id,Name, Latitude, Longitude) 另一个是 Measures
(City_id, Measure_Date、温度、湿度、风速、气压)。
City_id
是 City
中的主键和 Measures
中的外键。 City_id
和 Measure_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
我有两个表:一个叫做 City
(City_id,Name, Latitude, Longitude) 另一个是 Measures
(City_id, Measure_Date、温度、湿度、风速、气压)。
City_id
是 City
中的主键和 Measures
中的外键。 City_id
和 Measure_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