2013-06-20 5 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.

Я добавил ISNULL в SUM, также пробовал внутри него, и он продолжает возвращать null, если в Encomienda нет строк.

Micro.KG_Disponibles всегда имеет значение.

ответ

1

Сначала остановитесь, используя неявные соединения. Как только вы это сделаете, вы можете использовать LEFT JOIN, который, вероятно, решит вашу проблему.

+0

LEFT JOIN решила проблему. Но не подразумеваемые объединения работают как JOINS? Я пытаюсь сказать, что даже если я присоединяюсь, ISNULL должен был работать: / –

Смежные вопросы