Ver Mensaje Individual
  #3 (permalink)  
Antiguo 04/05/2010, 07:52
yenda
 
Fecha de Ingreso: octubre-2007
Mensajes: 38
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: error en procedimiento

Buenos días, tendré en cuenta lo del cursor porque realmente no lo aconsejan según lo que leí, lo he quitado pero ahora es peor, yo creo que no me está recorriendo el select. Les comentaré que quiero hacer, creo una tabla tempPresenciasFijas y en esta consulta cada registro me trae un campo "int" que se llama diferencia, esto esto es la diferencia entre dos rangos de fechas"fechainicial y fechaFinal" ya que necesito ver los registros con las fechas completas que están dentro de estos rangos.
Por eso al cargar mi segunda tabla toma el número diferencia y va cargando ese número de veces el mismo registro pero va adicionando un día a la fecha inicial.
Ejemplo:04/05/2010 - 08/05/2010 diferencia 4
primer registro: idpresencia mes year nombreportal fechainicio fechafin04/05/2010
1 5 2010 portal1 04/05/2010
1 5 2010 portal1 05/05/2010
1 5 2010 portal1 06/05/2010 ...... y sigue revisando los otros registros para hacer lo mismo.
Este son los cambios que hice, ya que tenía mal set @FECHAINICIO =Dateadd(day,@NUM,@fechaInicio)

Quité los cursores y ahora ya ni me carga la segunda tabla solo carga nulos. Agradezco la ayuda a todos.

Cita:
SELECT idPresenciaFija, Case datepart(mm,fechaInicio) When 1 then 'Enero' When 2 then 'Febrero' When 3 then 'Marzo' When 4 then 'Abril' When 5 then 'Mayo' When 6 then 'Junio' When 7 then 'Julio' When 8 then 'Agosto' When 9 then 'Septiembre' When 10 then 'Octubre' When 11 then 'Noviembre' When 12 then 'Diciembre' End as mes,month(fechaInicio)as mesN, year(fechaInicio) ano,
day(fechaInicio) as diaI,day(fechaFin) as diaF, DateDiff(day,fechaInicio,fechaFin)diferencia, fechaInicio, fechaFin, Portal.nombrePortal, Portal.idPortal
into temppresenciasFijas
FROM PresenciasFijas INNER join Portal ON Portal.idPortal = PresenciasFijas.idPortal

CREATE TABLE tempPres (IDPRESENCIAFIJA INT,MES VARCHAR (50) ,MESN INT,ANO INT,DIAI INT ,DIAF INT,DIFERENCIA INT,FECHAINICIO DATETIME,FECHAFIN DATETIME,NOMBREPORTAL VARCHAR (150) ,IDPORTAL INT)

DECLARE
@IDPRESENCIAFIJA INT,
@MES VARCHAR(50) ,
@MESN INT,
@ANO INT,
@DIAI INT ,
@DIAF INT,
@DIFERENCIA INT,
@FECHAINICIO DATETIME,
@FECHAFIN DATETIME,
@NOMBREPORTAL VARCHAR(150) ,
@IDPORTAL INT,
@NUM INT

SELECT IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL
FROM dbo. temppresenciasFijas
IF(@DIFERENCIA=1)
BEGIN
SET @NUM =0
INSERT INTO dbo.tempPres
( IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL)
VALUES
( @IDPRESENCIAFIJA,@MES,@MESN, @ANO, @DIAI, @DIAF, @DIFERENCIA, @FECHAINICIO,@FECHAFIN, @NOMBREPORTAL, @IDPORTAL)
END
ELSE
BEGIN
WHILE(@NUM=@DIFERENCIA)
BEGIN
set @FECHAINICIO =Dateadd(day,@NUM,@fechaInicio)
INSERT INTO dbo. tempPres
( IDPRESENCIAFIJA, MES,MESN, ANO, DIAI, DIAF, DIFERENCIA, FECHAINICIO,FECHAFIN, NOMBREPORTAL, IDPORTAL)
VALUES
( @IDPRESENCIAFIJA,@MES,@MESN, @ANO, @DIAI, @DIAF, @DIFERENCIA, @FECHAINICIO,@FECHAFIN, @NOMBREPORTAL, @IDPORTAL)
SET @NUM= @NUM+1
END
END