Stored procedures 具有默认值的存储过程
我有两个表:一个是城市id,名称,纬度,经度,另一个是测量城市id,测量日期,温度,湿度,风速,气压 City_id是City中的主键,是Measures中的外键。城市id和测量日期也是主键 我正试图在SQLServer2005中编写一个存储过程,它允许我计算数据库中特定城市的所有四个测量值的平均值。如果城市在度量中没有记录,我希望默认值为null 如何将这些城市的默认值设置为null?谢谢各位: 以下是我所做的代码:Stored procedures 具有默认值的存储过程,stored-procedures,sql-server-2005,Stored Procedures,Sql Server 2005,我有两个表:一个是城市id,名称,纬度,经度,另一个是测量城市id,测量日期,温度,湿度,风速,气压 City_id是City中的主键,是Measures中的外键。城市id和测量日期也是主键 我正试图在SQLServer2005中编写一个存储过程,它允许我计算数据库中特定城市的所有四个测量值的平均值。如果城市在度量中没有记录,我希望默认值为null 如何将这些城市的默认值设置为null?谢谢各位: 以下是我所做的代码: set ANSI_NULLS ON set QUOTED_IDENTIFIE
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
-20多年前,在ANSI-92 SQL标准中,旧式的逗号分隔表列表样式被正确的ANSI连接语法所取代,不鼓励使用它来帮助:然而,如果一个答案解决了你的问题,你应该接受它,这样其他人就会知道问题已经解决了。