Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   restar un dia a una fecha para determinar la fecha fin de la vigencia de un producto (http://www.forosdelweb.com/f87/restar-dia-fecha-para-determinar-fecha-fin-vigencia-producto-461440/)

jperezgaxiola 01/02/2007 13:55

restar un dia a una fecha para determinar la fecha fin de la vigencia de un producto
 
de nuevo dando batalla raza, mi siguiente problema es:
estoy migrando una base de datos de una empresa que usa un sistema "X" a la base de datos que usa mi sistema, tengo una tabla origen, la cual contiene un campo fecha, la tabla a la cual voy a pasar esa informacion necesita dos datos de fecha, estas fechas determinan el periodo de vigencia del registro un ejemplo seria:
PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_A,
PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_B, FECHAFIN_B, cuando se decide cambiar la vigencia para la combinacion PRODUCTOA, MATERIAPRIMAA, se agrega otro registro con distinto periodo de vigencia, estos periodos jamas se deben traslapar, o sea no se puede tener la combinacion :
PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_A,
PRODUCTOA, MATERIAPRIMAA, FECHAINICIO_A, FECHAFIN_B,
la forma en que se determina la vigencia en la tabla origen es:
PRODUCTOA, MATERIAPRIMAA, FECHA_A,
PRODUCTOA, MATERIAPRIMAA, FECHA_B, la fecha FECHA_B que representa la fecha de inicio de vigencia para el segundo registro, a su vez representa la fecha fin menos un dia del primer registro, lo que yo necesito es un procedimiento que me reste un dia a la siguiente fecha de la tabla origen, siempre y cuando corresponda a la vigencia del mismo productoA y MateriaA,
para restar el dia uso la funcion DATEADD(DAY, -1, FECHA), el lio es como decirle al procedimiento que la FECHA a la cual se le restara el dia es a la siguiente y no a la del registro donde esta posicionado, y como lo explique anteriormente, que la fecha siguiente corresponda a la misma combinacion PRODUCTOA, MATERIAPRIMAA, estoy probando usando una subconsulta, pero aun no doy, cualquier ayuda, como siempre se les agradecera encarecidamente.

Mithrandir 01/02/2007 16:52

Re: restar un dia a una fecha para determinar la fecha fin de la vigencia de un produ
 
Asumiendo que quieres la fecha más vieja para el inicio (FECHAINICIO_A < FECHAINICIO_B) y que quieres la fecha más nueva para el fin (FECHAFIN_A < FECHAFIN_B) puedes probar con:

SELECT Producto, Min(FechaInicio) AS MinFechaInicio, Max(FechaFin) AS MaxFechaFin
FROM tabla
GROUP BY Producto

Y sobre esa sentencia hacer las operaciones.

el.patron 05/02/2007 16:18

Re: restar un dia a una fecha para determinar la fecha fin de la vigencia de un produ
 
A ver:
Yo entiendo que para una combinación productoA-materiaPrimaA tienes en la tabla vieja una serie de fechas (fechaA, fechaB, fechaC, fechaD) y quieres tener en la nueva tabla:
ProductoA, MateriaPrimA, FechaA, FechaB-1
ProductoA, MateriaPrimA, FechaB, FechaC-1
ProductoA, MateriaPrimA, FechaC, FechaD-1

Si lo he entendido bien, debería funcionar algo así:
Código:

Insert into NuevaTabla Select V1.producto, V1.MateriaPrima, V1.Fecha, Min(DATEADD(DAY, -1, V2.Fecha)) From ViejaTabla As V1
Join ViejaTabla As V2 On V1.producto = V2.producto And V1.MateriaPrima = V2.MateriaPrima And V1.Fecha < V2.Fecha
Group By V1.producto, V1.MateriaPrima, V1.Fecha



La zona horaria es GMT -6. Ahora son las 10:15.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.