Ayuda con un query SQL

Pa?
31 de Octubre del 2005
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.

Gato
31 de Octubre del 2005
Manda un ejemplo de 10 o más registros, y la query que tienes hasta este momento

monky
31 de Octubre del 2005
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

Pa?
31 de Octubre del 2005
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.

monky
31 de Octubre del 2005
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


Pa?
31 de Octubre del 2005
Guau!! gracias compadre, me funcionó muy bién, muchisimas gracias de nuevo!! ;)

monky
31 de Octubre del 2005
Me alegro que te haya funcionado.

Para tu informacion soy mujer....