0

私は次の機能を持っています:

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 

Encomienda に行があれば問題なく動作します。ただし、そうしないと、関数は常に null を返します。

ISNULL を SUM に追加し、その中で試してみましたが、Encomienda に行がない場合は null を返し続けます。

Micro.KG_Disponibles には常に値があります。

4

1 に答える 1

1

まず、暗黙的な結合の使用を停止します。それが完了したら、おそらく問題を解決する LEFT JOIN を使用できます。

于 2013-06-20T03:04:48.853 に答える