Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Problema con consulta con fechas

Estas en el tema de Problema con consulta con fechas en el foro de SQL Server en Foros del Web. Hola a todos: Agradecería me orientara alguien para realizar la siguiente consulta. Tengo una tabla con unos valores de fecha e importe Fecha _____ Importe ...
  #1 (permalink)  
Antiguo 01/02/2011, 14:32
 
Fecha de Ingreso: enero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Problema con consulta con fechas

Hola a todos:

Agradecería me orientara alguien para realizar la siguiente consulta.
Tengo una tabla con unos valores de fecha e importe

Fecha _____ Importe
1/1/11_____ 15
2/1/11_____ 10
4/1/11 _____ 12
7/1/11 _____ 20
25/1/11 _____ 8
31/1/11 _____ 5

Quiero calcular cuantos dias está cada valor de tal manera que el resultado debe ser:

Fecha _____ Importe _____ Dias(campo calculado)
1/1/11 _____ 15 _____ 1
2/1/11 _____ 10 _____ 2
4/1/11 _____ 12 _____ 3
7/1/11 _____ 20 _____ 18
25/1/11 _____ 8 _____ 6
31/1/11 _____ 5 _____ 1

Se hacerlo en excel pero me tengo que hacerlo en transct -sql.

Gracias por adelantado
  #2 (permalink)  
Antiguo 01/02/2011, 14:57
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con consulta con fechas

Hola isagues:

Cita:
Quiero calcular cuantos dias está cada valor de tal manera que el resultado debe ser:
No entendí cómo calculas la columna Días (Campo calculado) en tu tabla, es decir, no estás contando cuantas veces aparece la fecha, pues con los datos que pones de ejemplo todos aparecen una sola vez.

Revisa los datos que pones de ejemplo y trata de explicar un poco mejor qué es lo que necesitas.

Saludos
Leo.
  #3 (permalink)  
Antiguo 01/02/2011, 14:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con consulta con fechas

Código SQL:
Ver original
  1. SELECT fecha, importe, datediff(d,fecha,getdate()) Dias FROM tabla

Saludos!
  #4 (permalink)  
Antiguo 01/02/2011, 15:33
 
Fecha de Ingreso: enero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problema con consulta con fechas

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola isagues:



No entendí cómo calculas la columna Días (Campo calculado) en tu tabla, es decir, no estás contando cuantas veces aparece la fecha, pues con los datos que pones de ejemplo todos aparecen una sola vez.

Revisa los datos que pones de ejemplo y trata de explicar un poco mejor qué es lo que necesitas.

Saludos
Leo.
Gracias leonardo_josue:
Tratare de explicarlo mejor

Se trata de una consulta para calcular una liquidación de intereses en una cuanta bancaria. Yo se los saldos finales diarios de una cuenta. Eso lo veo en la primera tabla:

1/1/11 saldo:24
2/1/11 saldo: 10 (significa que el día dos ha habido una entrada de de -14)
7/11/11 saldo:12 (ha habido una entrada de +2 y los dias 3,4,5,6 no han habido ni entrada ni salida de movimientos por lo que del 2/1/11 al 7/1/11 se ha mantenido un saldo de 10)

Por lo tanto la consulta con el campo calculado sería

Fecha_____Saldo_____CampoCalculado
1/1/11_____24_______1 ( durante un día 1 día saldo ha sido de 24)
2/1/11_____10_______5 ( durante 5 días el saldo ha sido de 10)
7/1/11_____15_______24 (durante 24 dias se ha mantenido el saldo de 15)
31/1/11____20_______1 Al ser la ultima fecha se mantiene un día.



El campo calculado debe realizar la operación:

2/1/11 - 1/1/11 = 1dia
7/1/11 - 2/1/11=5 dias
31/1/11- 7/1/11=24 dias
1/2/11(*)- 31/1/11=1 dia

Lo que no se es como hacer referencia a valores de filas anteriores o posteriores en el campo calculado


(*)El calculo sera siempre mensual por lo que siempre tendremos valores del 1/1 y el 31/1.

Espero haber sido más claro

Gracias por adelantado
  #5 (permalink)  
Antiguo 01/02/2011, 15:51
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Problema con consulta con fechas

Prueba con esto:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (fecha datetime, importe INT)
  2. INSERT INTO @Tabla VALUES ('2011-01-01', 15);
  3. INSERT INTO @Tabla VALUES ('2011-01-02', 10)
  4. INSERT INTO @Tabla VALUES ('2011-01-04', 12)
  5. INSERT INTO @Tabla VALUES ('2011-01-07', 20)
  6. INSERT INTO @Tabla VALUES ('2011-01-25', 8)
  7. INSERT INTO @Tabla VALUES ('2011-01-31', 5)
  8.  
  9. SELECT fecha, importe, datediff(d, fecha, isnull((
  10. SELECT top 1 T2.fecha FROM @Tabla T2 WHERE
  11. T2.fecha > T1.fecha ORDER BY fecha
  12. ), T1.fecha + 1)) siguiente_fecha  FROM @Tabla T1

Tal como lo mencionas, el único cuidado es que que tienes que filtrar las fechas por mes.

Saludos y espero que te sirva el código
Leo.
  #6 (permalink)  
Antiguo 01/02/2011, 16:51
 
Fecha de Ingreso: enero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problema con consulta con fechas

Cita:
Iniciado por leonardo_josue Ver Mensaje
Prueba con esto:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (fecha datetime, importe INT)
  2. INSERT INTO @Tabla VALUES ('2011-01-01', 15);
  3. INSERT INTO @Tabla VALUES ('2011-01-02', 10)
  4. INSERT INTO @Tabla VALUES ('2011-01-04', 12)
  5. INSERT INTO @Tabla VALUES ('2011-01-07', 20)
  6. INSERT INTO @Tabla VALUES ('2011-01-25', 8)
  7. INSERT INTO @Tabla VALUES ('2011-01-31', 5)
  8.  
  9. SELECT fecha, importe, datediff(d, fecha, isnull((
  10. SELECT top 1 T2.fecha FROM @Tabla T2 WHERE
  11. T2.fecha > T1.fecha ORDER BY fecha
  12. ), T1.fecha + 1)) siguiente_fecha  FROM @Tabla T1

Tal como lo mencionas, el único cuidado es que que tienes que filtrar las fechas por mes.

Saludos y espero que te sirva el código
Leo.
Gracias

lo probare y te digo
  #7 (permalink)  
Antiguo 02/02/2011, 08:07
 
Fecha de Ingreso: enero-2007
Mensajes: 5
Antigüedad: 17 años, 3 meses
Puntos: 0
Respuesta: Problema con consulta con fechas

Cita:
Iniciado por leonardo_josue Ver Mensaje
Prueba con esto:

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE (fecha datetime, importe INT)
  2. INSERT INTO @Tabla VALUES ('2011-01-01', 15);
  3. INSERT INTO @Tabla VALUES ('2011-01-02', 10)
  4. INSERT INTO @Tabla VALUES ('2011-01-04', 12)
  5. INSERT INTO @Tabla VALUES ('2011-01-07', 20)
  6. INSERT INTO @Tabla VALUES ('2011-01-25', 8)
  7. INSERT INTO @Tabla VALUES ('2011-01-31', 5)
  8.  
  9. SELECT fecha, importe, datediff(d, fecha, isnull((
  10. SELECT top 1 T2.fecha FROM @Tabla T2 WHERE
  11. T2.fecha > T1.fecha ORDER BY fecha
  12. ), T1.fecha + 1)) siguiente_fecha  FROM @Tabla T1

Tal como lo mencionas, el único cuidado es que que tienes que filtrar las fechas por mes.

Saludos y espero que te sirva el código
Leo.

Me funciona bien. Tengo que tener en cuenta el saldo inicial antes del priemr día del mes pero lo veo solucionable.
Tambíen tengo que tener en cuenta que si no existe un registro con el ultimo día del mes tendre que añadirlo de alguna manera.


Muchas gracias

Etiquetas: fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:36.