Ayuda con un query SQL
Hola,
Por favor, quisiera que alguien me ayude con un query que trato de hacer el SQL Server y no puedo.
Lo que intento es sacar de una tabla llamada "sincronizacion" un campo llamado id, 2 veces un mismo campo llamado fecha, facil hasta ahi, pero ahora necesito que el un campo fecha cumpla con la condicion que el campo "status" de la misma tabla sincronización sea igual a 4, y que otro campo fecha (que vendria a ser el mismo) esté entre 1 y 3.
El caso en si, seria que las fecha con status 4 serian sincronizaciones concluidas, y las que estarian entre 1 y 3 serian las ingresadas. Con esto podemos saber cuando fue la ultima vez que un usuario concluyo su sincronización y hasta cuando tiene sincronizaciones agendadas para en un futuro concluirlas.
Si alguien me puede ayudar, le agradecería mucho.
Saludos...
Paúl.
Ps. He intentado crear una tabla temporal igual a la tabla "sincronización" y de ahi tomar el otro campo fecha pero la consulta demora demasiado porque son como 503.000 registros.
Por favor, quisiera que alguien me ayude con un query que trato de hacer el SQL Server y no puedo.
Lo que intento es sacar de una tabla llamada "sincronizacion" un campo llamado id, 2 veces un mismo campo llamado fecha, facil hasta ahi, pero ahora necesito que el un campo fecha cumpla con la condicion que el campo "status" de la misma tabla sincronización sea igual a 4, y que otro campo fecha (que vendria a ser el mismo) esté entre 1 y 3.
El caso en si, seria que las fecha con status 4 serian sincronizaciones concluidas, y las que estarian entre 1 y 3 serian las ingresadas. Con esto podemos saber cuando fue la ultima vez que un usuario concluyo su sincronización y hasta cuando tiene sincronizaciones agendadas para en un futuro concluirlas.
Si alguien me puede ayudar, le agradecería mucho.
Saludos...
Paúl.
Ps. He intentado crear una tabla temporal igual a la tabla "sincronización" y de ahi tomar el otro campo fecha pero la consulta demora demasiado porque son como 503.000 registros.
Manda un ejemplo de 10 o más registros, y la query que tienes hasta este momento
Asi debiera funcionar
select id,
CASE WHEN status= 4 THEN fecha ELSE NULL END AS fecha1,
CASE WHEN status BETWEEN 1 AND 3 THEN fecha ELSE NULL END AS fecha2
from SINCRONIZACION
where .....
Suerte
select id,
CASE WHEN status= 4 THEN fecha ELSE NULL END AS fecha1,
CASE WHEN status BETWEEN 1 AND 3 THEN fecha ELSE NULL END AS fecha2
from SINCRONIZACION
where .....
Suerte
Muchas gracias por responder; Monky, la verdad es que me ayudó mucho tu respuesta, solo tengo una pregunta mas; los registro son muchos y por eso quiero agruparlos por ID y como me interesa la ultima fecha de sincronización uso la función "max" aplicada al campo fecha; hay alguna forma en que salga algo asi (si hay como obviamente) :
ID FECHA1 FECHA2
12 2005-10-31 2005-11-03
15 2005-10-28 2005-11-05
y asi sucesivamente.
Gracias nuevamente si alguien me puede ayudar.
Saludos...
Paúl.
ID FECHA1 FECHA2
12 2005-10-31 2005-11-03
15 2005-10-28 2005-11-05
y asi sucesivamente.
Gracias nuevamente si alguien me puede ayudar.
Saludos...
Paúl.
prueba asi... espero resulte
select id,
fecha1 = max(CASE WHEN status= 4 THEN fecha ELSE NULL END),
fecha2 = max(CASE WHEN status BETWEEN 1 AND 3 THEN fecha ELSE NULL END)
from prueba
group by id
order by id
Avisame si te funciono
select id,
fecha1 = max(CASE WHEN status= 4 THEN fecha ELSE NULL END),
fecha2 = max(CASE WHEN status BETWEEN 1 AND 3 THEN fecha ELSE NULL END)
from prueba
group by id
order by id
Avisame si te funciono
Guau!! gracias compadre, me funcionó muy bién, muchisimas gracias de nuevo!! ;)
