Ver Mensaje Individual
  #1  
Antiguo 17-10-2007
Avatar de Milperrimo
Milperrimo Milperrimo is offline
Miembro
 
Registrado: sep 2007
Ubicación: Guadalajara
Posts: 57
Reputación: 17
Milperrimo Va por buen camino
problemas con consulta en un sp

Saludos, tengo un problemon aki en esta consulta porke necesito ke me regrese un solo registro con las sumas de todo lo ke kiero traer, pero me devuelve un registro por cada id, este es el sp
Código SQL [-]
SET TERM ^ ;
CREATE PROCEDURE TRAE3 (
 FECHAINI DATE,
 FECHAFIN DATE)
RETURNS (
 GS       FLOAT,
 MEC      INTEGER,
 SER      INTEGER,
 TC       INTEGER)
AS 
BEGIN FOR SELECT 
(SELECT SUM(GS) FROM HONDATA WHERE IDHONDATA = H.IDHONDATA) AS GS,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND  R.IDRETSER = 1) AS MEC,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND  R.IDRETSER = 2) AS SER,
(SELECT COUNT(R.IDRETSER) FROM RETMR R WHERE R.IDHONDATA = H.IDHONDATA AND R.IDRETSER = 3) AS TC
FROM ENCAOR E, HONDATA H
WHERE E.TIPO <> 'C' AND E.FECH BETWEEN :FECHAINI AND :FECHAFIN AND E.ORDE = H.ORDE AND EXTRACT(MONTH FROM (H.FECHORDE)) = EXTRACT(MONTH FROM(:FECHAFIN))
INTO :GS, :MEC, :SER, :TC
DO SUSPEND;
END^
SET TERM ; ^


el gs es un importe por lo que debe de traer la suma, los otros son tipos de algo, por lo que debe de traer el count de ellos.
en este caso en la tabla principal ke es hondata tengo 4 registros, de los cuales 2 cumplen con el requisito ke necesito ke es mandar la fecha, mando unas fechas de rango de marzo y de los 4 registros, 2 cumplen, por lo tanto me deve de traer el sp un registro con la suma de estos 2 pero me trae 2 registros, uno por cada uno, Como le hago para ke solo me mande uno con las sumas de los 2???????????????????????????// en el sqlserver no tenia problema alguno para traer este tipo de consultas. En el primer registro de la tabla el gs vale 56 y en segundo tambien, por lo que el resultado del sp debe de dar un registro con gs = 112 y MEC = 2 (los otros 2 en cero), pero en lugar de esto me da 2 registros con gs =56 y MEC =1 cada uno
Responder Con Cita