Visual Basic.NET - AYUDA CON FORMULA

 
Vista:
sin imagen de perfil
Val: 43
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Ignacio (27 intervenciones) el 18/07/2019 12:03:22
Buenos días y gracias de antemano,

Tengo una tabla con los campos código de cliente, fecha de alta y fecha de baja.
Me gustaría realizar una consulta la cual me devolviera el nº de ocupaciones de un mes sin necesidad de recorrer toda la tabla y evaluar cada registro:

Si por ejemplo solicitara la ocupación de Marzo :

CALCU-DIAS

Que me devolviera 44
Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 15:12:59
Hola,

Penso a un comando SQL pareciendo a "Select Count(Operaciones) From TablaClientes Where ElMesDelCampoFecha = 3".

Pero tiens que dar muchas informaciones sobre la tabla y los formatos de sus campos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Ignacio (27 intervenciones) el 18/07/2019 16:19:06
Hola. gracias por su respuesta.
No me interesa saber cuantos han entrado o salido el mes 3, sino cuantos días del mes 3 han estado en total.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 17:10:12
He bien comprendido, pero sin un exemplo de la tabla (con sus campos y valores), este es dificil de responder.

El comando SQL siguiente debe solucionar tu problema. Tienes que lo ajuster.

1
2
3
SELECT COUNT(Day(ColumnConFechas)) AS CuantidadDias
FROM LaTablaDeLosOperaciones
WHERE Month(ColumnConFechas) = 3

Puedo lo ajustar si dame las informaciones sobre la tabla.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Ignacio (27 intervenciones) el 18/07/2019 17:51:17
Gracias Phil por tu atención.
Adjunte una imagen con la tabla y valores en el primer post.

I try in my bad english:

I have a table with the fields customerId, datein and dateout.

I want to send a query witch returned me the sum of the number of days that each customer has been in a specific month.
For example March 19:

00001 | 20190205 | 20190401 | > DAYS IN MARCH19 = 31
00002 | 20190315 | 20190318 | > DAYS IN MARCH19 = 3
00003 | 20190215 | 20190305 | > DAYS IN MARCH19 = 5
00004 | 20190327 | 20190716 | > DAYS IN MARCH19 = 5

Must return 44
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Phil Rob (1546 intervenciones) el 18/07/2019 18:46:55
Miraré en la tarde o mañana.
Por favor, dice me si las fechas en la DB son el formato Date o DateTime o String ?
Como tengo los nombres de los campos, puedo probar.

Gracias para escribir en inglés, comprendo un poco pero no mejor en inglés que en español. Hablo francés y español es para diversión ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Ignacio (27 intervenciones) el 18/07/2019 18:57:49
Merci Phil,

Los campos de fecha los tengo en string como se muestran en el último ejemplo (yyyymmdd)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Phil Rob (1546 intervenciones) el 19/07/2019 15:20:01
Hola,

Disculpa la demora …

No he escribido una solucion pura SQL (demasiado perezoso para buscar) pero tengo uno comando SQL que da los registros que contienen los fechas útiles y he programado en VB un algoritmo para hacer los calcules que te gustan.

A lugar de explicar mis códigos, prefiero te enviar el proyecto completo para que lo pruebas : adjunto el archivo ProgESParaMese.zip (los nombres de los objetos vienen de otro proyecto).

El lugar de la DB y sus objetos.
Mese01

El resultado de la ejecución de mi programa.
Mese02

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 43
Ha aumentado 1 puesto en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Ignacio (27 intervenciones) el 19/07/2019 17:33:12
Gracias Phil vaya currada!!!

Recorriendo un dataset es como lo hago actualmente (y es bastante más sencillo de lo que propones) pero son cientos de miles de registros por eso busco una forma más rápida de hacerlo.


Ya he encontrado la forma de hacerlo, la tengo que retocar un poco, pero lo dejo aquí por si a alguien le sirve:

1
EjecutarEscalar(select sum(datediff( day, case when DATEIN<'20190301' then '20190301' else DATEIN end, case when DATEOUT>'20190331' then '20190331' else DATEOUT end ))


Muchas gracias por tu atención y por el tiempo dedicado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

AYUDA CON FORMULA

Publicado por Phil Rob (1546 intervenciones) el 19/07/2019 18:41:25
Hola,

Veas que no leo todo la DB. Solamente SQL busca los registros que contienen les fachas útiles para el mes seleccionado. Después, calculo los días. El comando SQL que muestras hace el mismo.
No creo que tu comando será más rápido. Cuando envías el código correcto, puedo lo probar en grande DB (este es fácil de llenar la tabla con fechas creadas en una cicla).

Cordialement,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar