亗 ᴍᴀᴛᴀ.ꜱᴋᴛ 亗

ʙᴜɪʟᴛ ғʀᴏᴍ ᴘʀᴇssᴜʀᴇ
Se incorporó
16 Febrero 2020
Mensajes
1.551
Estimados pasa que tengo esto:

1604000061671.png


Necesito crear estos campos:

1604000033018.png


Fecha_futuro: La fecha más cercana a fecha, pero asociada al Telefono
Diferencia: Resta de fecha futuro - fecha


Ayuda plz
 
Última modificación:
Solution
Para la fecha_futuro puedes usar la función Lead, por lo que la query para traerte la fecha +1 de cada teléfono sería asi:

lead(fecha, 1) OVER (PARTITION BY telefono Order By fecha ASC) as fecha_futuro.

Cuando llege al último registro de la partición teléfono al no existir un +1 te va a retornar el null.

Acá tienes la función: https://www.techonthenet.com/sql_se... the LEAD function,try using the LAG function.



Enviado desde mi SM-G9650 mediante Tapatalk

mmirandap

Gold Member
Se incorporó
1 Septiembre 2006
Mensajes
2.510
La diferencia puedes sacarla con un datediff o timestampdiff, dependiendo del tipo de dato en la fecha.

La fecha futura es cuanto, 1 mes en adelante?
 
Upvote 0

mmirandap

Gold Member
Se incorporó
1 Septiembre 2006
Mensajes
2.510
La fecha futuro tiene que recorrer todos los registros que tenga una fecha asociada a algún Telefono, por eso al final queda en NULL.
Entiendo, pero qué fecha quieres poner, 1 semana mas, 1 mes mas, etc. En base a eso se puede hacer un select simple:

select telefono,fecha, dateadd(month,1,fecha) as fecha_futuro,datediff(day,fecha_futuro,fecha) as diferencia from tabla
 
Upvote 0

亗 ᴍᴀᴛᴀ.ꜱᴋᴛ 亗

ʙᴜɪʟᴛ ғʀᴏᴍ ᴘʀᴇssᴜʀᴇ
Se incorporó
16 Febrero 2020
Mensajes
1.551
Entiendo, pero qué fecha quieres poner, 1 semana mas, 1 mes mas, etc. En base a eso se puede hacer un select simple:

select telefono,fecha, dateadd(month,1,fecha) as fecha_futuro,datediff(day,fecha_futuro,fecha) as diferencia from tabla
Es que necesito poner el registro N+1 al lado del N y cuando el telefono no tenga más registros en fecha,debe quedar NULL

Aqui ordené las fechas de menor a mayor para que se entienda mejor, no debo agregar nada al campo con dateadd:

1604000565665.png
 
Upvote 0

Deadmaus

Miembro Regular
Se incorporó
13 Enero 2014
Mensajes
48
Para la fecha_futuro puedes usar la función Lead, por lo que la query para traerte la fecha +1 de cada teléfono sería asi:

lead(fecha, 1) OVER (PARTITION BY telefono Order By fecha ASC) as fecha_futuro.

Cuando llege al último registro de la partición teléfono al no existir un +1 te va a retornar el null.

Acá tienes la función: https://www.techonthenet.com/sql_se... the LEAD function,try using the LAG function.



Enviado desde mi SM-G9650 mediante Tapatalk
 
Upvote 0
Solution

亗 ᴍᴀᴛᴀ.ꜱᴋᴛ 亗

ʙᴜɪʟᴛ ғʀᴏᴍ ᴘʀᴇssᴜʀᴇ
Se incorporó
16 Febrero 2020
Mensajes
1.551
Para la fecha_futuro puedes usar la función Lead, por lo que la query para traerte la fecha +1 de cada teléfono sería asi:

lead(fecha, 1) OVER (PARTITION BY telefono Order By fecha ASC) as fecha_futuro.

Cuando llege al último registro de la partición teléfono al no existir un +1 te va a retornar el null.

Acá tienes la función: https://www.techonthenet.com/sql_server/functions/lead.php#:~:text=In SQL Server (Transact-SQL), the LEAD function,try using the LAG function.



Enviado desde mi SM-G9650 mediante Tapatalk

Esa era la funcion que me faltaba!! Vale gracias
 
Upvote 0
Subir