2013-06-20 106 views
0

空返回我有以下功能:功能总是甚至ISNULL

CREATE FUNCTION HARDCODERS.getKilosDisponiblesViaje(@Viaje int) 

RETURNS TABLE 
AS 
RETURN 

(
select Micro.KG_Disponibles - SUM(Encomienda.Cant_KG) as KGDisponibles 
from HARDCODERS.Micro, HARDCODERS.Viaje, HARDCODERS.Encomienda, HARDCODERS.PasajeEncomienda 
where Viaje.Cod_Viaje = @Viaje AND Viaje.Patente = Micro.Patente AND PasajeEncomienda.Cod_Viaje = @Viaje 
    AND PasajeEncomienda.Cod_PasajeEncomienda = Encomienda.Cod_PasajeEncomienda 
group by Micro.KG_Disponibles,Micro.Patente 
) 

GO 

它工作正常,如果我有埃恩科米恩达行。但是,如果我不这样做,函数将始终返回null。

我向SUM添加了一个ISNULL,并且在它内部尝试过,如果Encomienda中没有行,它会一直返回null。

Micro.KG_Disponibles始终有一个值。

回答

1

首先停止使用隐式连接。完成之后,您可以使用LEFT JOIN,这可能会解决您的问题。

+0

LEFT JOIN解决了这个问题。但是,不要将隐式联接用作JOINS?我想说的是,即使我进行了连接,ISNULL也应该工作:/ –