SQL Server - ordenar fechas

 
Vista:
sin imagen de perfil
Val: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por JJ (26 intervenciones) el 11/05/2020 07:21:48
Buenas noches,

solicito ayuda urgente con este problema que tengo.

Tengo una Tabla llamada Clientes con las variables: Nombre, Fecha nacimiento, Fecha Visita, Departamento (ESTA TABLA CLIENTES TIENE MAS DE 5000 REGISTROS)




imagen1


Necesito hacer una consulta que me muestre los resultados de la siguiente manera:


imagen2

Agradezco me puedan ayudar, lo intenté con full outer join pero los registros no los logré mostrar de la manera deseada, intenté realizarlo con PIVOT pero el problema que creo que tengo es que no conozco el valor de todos los departamento y no todas las personas tienen la misma cantidad de visitas

espero me puedan ayudar, 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 Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por Isaias (4558 intervenciones) el 11/05/2020 16:45:54
Para utiilzar PIVOT debes conocer el NUMERO DE COLUMNAS que vas a crear, no pueden ser "n" columnas, ¿Que motor de base de datos usas?
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: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por JJ (26 intervenciones) el 11/05/2020 17:10:27
Buenos días Isais,

El motor que estoy utilizando es SQL Server 2019....

Correcto, lo del PIVOT lo tuve que descartar por esa razón que indicas, hay alguna otra manera de lograr el resultado?

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: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por JJ (26 intervenciones) el 11/05/2020 17:49:15
Gracias Elias,

ese Link lo había revisado, pero realmente no me queda muy claro como utilizar de manera correcta "CURSOR" por eso no lo había resuelto con esa opció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
Imágen de perfil de Vega
Val: 102
Ha aumentado su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por Vega (43 intervenciones) el 11/05/2020 17:54:37
prueba haciendo un poco de SQL dinámico para generar la consulta PIVOT necesaria en base al número máximo de visitas y luego ejecútala con un EXEC().
lo que estas intentando hacer es mucho más fácil de conseguir en excel o Power BI. ¿Estás obligado ha hacerlo en SQL?
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: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por JJ (26 intervenciones) el 11/05/2020 18:10:14
Gracias Vega,

si la idea es hacer una consulta directa, para monitorear estos resultados
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: 48
Ha disminuido su posición en 2 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

ordenar fechas

Publicado por JJ (26 intervenciones) el 11/05/2020 19:58:49
Isaias, busqué información de CURSOR y he logrado realizar el proceso, sin embargo no me lo hace para todos los registros que tengo, solo si en la condicion where pongo el nombre del usuario me lo ejecuta, pero si le quito la condición (para que lo haga con todos los usuairos me muestra el mensaje: Completion time: 2020-05-11T11:58:18.9731164-06:00


el Script es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
DECLARE  @nombre AS nvarchar(400), @fecha date, @fecha2 date, @dpto as nvarchar(400), @message_T NVARCHAR(MAX), @PolNumber5 NVARCHAR(255);
SET @message_T = '';
SET @PolNumber5 = '';
DECLARE policyDocs_csr CURSOR
FOR
    SELECT [NOMBRE],[FECHA NACIMIENTO] date,[FECHA VISITA] date,dpto FROM [CLIENTES] where  Ultima_Visita is null and Primera_visita is null --[NOMBRE] = 'LUIS RAMOS'
 
 order by [FECHA Visita];
OPEN policyDocs_csr;
FETCH NEXT FROM policyDocs_csr INTO @nombre, @fecha, @fecha2, @dpto;--, @Submitted;
WHILE @@FETCH_STATUS = 0
    BEGIN
        IF @PolNumber5 <> @nombre
            SET @message_T = @message_T+CHAR(13)+@nombre+' | '+CONVERT(VARCHAR,@fecha)+' | '+CONVERT(VARCHAR,@fecha2)+' ( '+CONVERT(VARCHAR, isnull(@dpto, ''))+' ) | ';
--)
            ELSE
        IF @PolNumber5 = @nombre
            SET @message_T = @message_T+CONVERT(VARCHAR,@fecha2)+' ( '+CONVERT(VARCHAR, isnull(@dpto, ''))+' ) | ';
        SET @PolNumber5 = @nombre;
        FETCH NEXT FROM policyDocs_csr INTO @nombre, @fecha, @fecha2, @dpto;--, @Submitted;
    END;
IF @@FETCH_STATUS <> 0
    PRINT @message_T;
CLOSE policyDocs_csr;
DEALLOCATE policyDocs_csr;
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