Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/10/2011, 18:49
ADANSUAVE
 
Fecha de Ingreso: mayo-2008
Mensajes: 51
Antigüedad: 16 años
Puntos: 2
Respuesta: Funcion regresa nulo

OK. muchas gracias, es bueno saberlo y mas cuando tus tablas son de miles de registros. gracias viejo.
PONGO MI CODIGO, por lo del DISTINCT
---------------------------------------------------------------------------------------------

CREATE FUNCTION DBO.M4FN_MAX_PLAZA (@pID_EMPLEADO VARCHAR, @pFEC_PAGO DATETIME)
RETURNS NUMERIC
AS
BEGIN
DECLARE @vMAX_PLAZA NUMERIC (10)

SELECT @vMAX_PLAZA = DISTINCT (RL.ID_PLAZA)
FROM M4T_ACUMULADO_RL RL

INNER JOIN M4T_ACUMULADO_RL1 RL1
ON RL.ID_SOCIEDAD = RL1.ID_SOCIEDAD
AND RL.ID_EMPLEADO = RL1.ID_EMPLEADO
AND RL.FEC_ALTA_EMPLEADO = RL1.FEC_ALTA_EMPLEADO
AND RL.FEC_IMPUTACION = RL1.FEC_IMPUTACION
AND RL.FEC_PAGO = RL1.FEC_PAGO

INNER JOIN M4T_LISTADO_NOM LN
ON RL.ID_SOCIEDAD = LN.ID_SOCIEDAD
AND RL.ID_EMPLEADO = LN.ID_EMPLEADO
AND RL.FEC_ALTA_EMPLEADO = LN.FEC_ALTA_EMPLEADO
AND RL.FEC_IMPUTACION = LN.FEC_IMPUTACION
AND RL.FEC_PAGO = LN.FEC_PAGO

WHERE (RL.FEC_IMPUTACION) = (SELECT MAX(RLA.FEC_IMPUTACION)
FROM M4_ACUMULADO_RL RLA
WHERE RLA.ID_EMPLEADO = RL.ID_EMPLEADO
AND RLA.FEC_PAGO = RL.FEC_PAGO)

AND RL.ID_EMPLEADO = @pID_EMPLEADO
AND RL.FEC_PAGO = @pFEC_PAGO

RETURN @vMAX_PLAZA
END

---------------------------------------------------------------------------------------------
si yo quiero crear la consulta de este modo, me manda error precisamente por el DISTINCT que esta en el SELECT, si se lo quito me deja crearla sin problemas, pero entonces la funcion asi estaria mal ya que sin el DISTINCT regresa varios valores.