Como filtrar por criterio de variación entre fechas en SQL Server
Publicado por Carlos (2 intervenciones) el 24/10/2018 01:56:26
Espero que alguien me pueda ayudar con el siguiente problema de la vida real =)
Tengo una BBDD "BD_EJEMPLO" y tabla "Ejemplo_Encuestas" en SQL Server que corresponden a encuestas a clientes y tiene los campos:
Id_Encuesta
Id_Cliente
Fecha_Encuesta
Calificacion
Calificacion_Agrupada
Donde:
- Id_Encuesta: Corresponde a un ID único de cada fila.
- Id_Cliente: Es el identificador de cada cliente encuestado y puede repetirse.
- Fecha_Encuesta: Fecha en que se efectuó la encuesta.
- Calificacion: Puntaje relacionado a la encuesta que varía de 0 a 10 donde 0 es malo y 10 es bueno.
- Calificacion_Agrupada: Agrupamiento del campo anterior "Calificacion" para tener solo 3 criterios donde "A" es bueno y corresponde a los puntajes 9 y 10, "B" es regular y corresponde a los puntajes 7 y 8 y "C" malo y corresponde a los puntajes desde el 0 hasta el 6.
Lo que se quiere marcar "SI"/"NO" en un campo adicional "Variacion_Negativa" aquellos "Id_Cliente" que en el tiempo disminuyeron en su Calificación"/"Calificacion_Agrupada".
Por decir algunos ejemplos:
- Si un cliente tiene tiene 02 encuestas con calificaciones de mas reciente a mas antiguo {"C";"A"} entonces en la nueva columna debería marcarse como un "SI" ya que disminuyó de "A" a "C".
- Otro cliente {"B";"B";"B";"A"} tiene 04 encuestas, tiene calificación "B" desde hace un tiempo, pero en algún momento fué "A", entonces también debe marcarse como "SI".
- Otro cliente {"A";"A";"A"} siempre tuvo la misma calificación entonces debe marcarse como un "NO".
- Otro cliente {"A";"B";"C"} Actualmente es "A" y antes era "B" varió hacia mejor, debe marcarse como un "NO" ya que solo buscamos aquellos que varían hacia menos.
- Otro {"C"} tiene una sola encuesta, entonces es "NO" ya que no hay variación.
En resumen:
Lo que se busca es marcar en la nueva columna con "SI", SOLO aquellas variaciones a menos comparando la encuesta mas reciente contra la anterior o si la anterior es igual con la variación mas reciente, teniendo en cuenta que el cliente ha tenido mas de una encuesta.
O de lo contrario obtener una nueva tabla con solo aquellos clientes "Id_Cliente" que cumplan con el criterio requerido.
Tengo una BBDD "BD_EJEMPLO" y tabla "Ejemplo_Encuestas" en SQL Server que corresponden a encuestas a clientes y tiene los campos:
Id_Encuesta
Id_Cliente
Fecha_Encuesta
Calificacion
Calificacion_Agrupada
Donde:
- Id_Encuesta: Corresponde a un ID único de cada fila.
- Id_Cliente: Es el identificador de cada cliente encuestado y puede repetirse.
- Fecha_Encuesta: Fecha en que se efectuó la encuesta.
- Calificacion: Puntaje relacionado a la encuesta que varía de 0 a 10 donde 0 es malo y 10 es bueno.
- Calificacion_Agrupada: Agrupamiento del campo anterior "Calificacion" para tener solo 3 criterios donde "A" es bueno y corresponde a los puntajes 9 y 10, "B" es regular y corresponde a los puntajes 7 y 8 y "C" malo y corresponde a los puntajes desde el 0 hasta el 6.
Lo que se quiere marcar "SI"/"NO" en un campo adicional "Variacion_Negativa" aquellos "Id_Cliente" que en el tiempo disminuyeron en su Calificación"/"Calificacion_Agrupada".
Por decir algunos ejemplos:
- Si un cliente tiene tiene 02 encuestas con calificaciones de mas reciente a mas antiguo {"C";"A"} entonces en la nueva columna debería marcarse como un "SI" ya que disminuyó de "A" a "C".
- Otro cliente {"B";"B";"B";"A"} tiene 04 encuestas, tiene calificación "B" desde hace un tiempo, pero en algún momento fué "A", entonces también debe marcarse como "SI".
- Otro cliente {"A";"A";"A"} siempre tuvo la misma calificación entonces debe marcarse como un "NO".
- Otro cliente {"A";"B";"C"} Actualmente es "A" y antes era "B" varió hacia mejor, debe marcarse como un "NO" ya que solo buscamos aquellos que varían hacia menos.
- Otro {"C"} tiene una sola encuesta, entonces es "NO" ya que no hay variación.
En resumen:
Lo que se busca es marcar en la nueva columna con "SI", SOLO aquellas variaciones a menos comparando la encuesta mas reciente contra la anterior o si la anterior es igual con la variación mas reciente, teniendo en cuenta que el cliente ha tenido mas de una encuesta.
O de lo contrario obtener una nueva tabla con solo aquellos clientes "Id_Cliente" que cumplan con el criterio requerido.
- BBDD_Ejemplo.zip(1,5 KB)
Valora esta pregunta
0