SQL - Ayuda con consulta SQL please!!!

 
Vista:

Ayuda con consulta SQL please!!!

Publicado por karl frederick (2 intervenciones) el 17/05/2006 09:27:10
Estimados,

Si alguien puede ayudarme, tengo una tabla con información de varios años, he creado un SELECT que me consulta una fecha especifica: ejemplo 02/2006 y le he agregado un UNION para que me consulte lo mismo pero con el año anterior. ejemplo 02/2005, todo funciona perfecto, pero la información me la entrega en FILAS y las necesito en columnas: Ejemplo:

fecha cod desc cant
02/2005 1111 peras dulces 50u
02/2006 1111 peras dulces 42u

me gustaría

fechaactual añopasado cod desc cant actual cantidad año pasado
02/2006 02/2005 1111 peras dulces 50u 42u

lo que sucede es que necesito comparar las cifras para presentarlas en un reporte y como filas no me sirve el datos debe ser en columnas, ya he intentado con PIVOT, pero no me resulta...

He pensado crear una tabla temp para guardar y los datos y luego presentarlos, pero no se como hacerlo...

TODA LA AYUDA SERA BIENVENIDA...GRACIAS

karl
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
sin imagen de perfil

RE:Ayuda con consulta SQL please!!!

Publicado por Liliana (426 intervenciones) el 17/05/2006 13:31:04
Hola,
te mando este código que servirá de ejemplo para lo que necesitás, saludos,
Liliana.

SELECT FechaActual = AVG(CASE WHEN YEAR(Fecha) = 2006 THEN Fecha END),
FechaPasada = AVG(CASE WHEN YEAR(Fecha) = 2005 THEN Fecha END),
Codigo, Descripción,
CantActual = SUM(CASE WHEN YEAR(Fecha) = 2006 THEN Cantidad ELSE 0 END),
CantPasada = SUM(CASE WHEN YEAR(Fecha) = 2005 THEN Cantidad ELSE 0 END)
FROM Tabla
GROUP BY Codigo, Descripció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

RE:Ayuda con consulta SQL please!!!

Publicado por karl frederick (2 intervenciones) el 19/05/2006 15:22:40
Gracias amigos, por si enorme ayuda, probaré los scripts que me enviaron y les aviso por mail o esta via...gracias...

Ahora me asalta una pequeña duda, puede ser que cuando lo convierta a visual basic y le pida intervencion al usuario, que el usuario solo al colocar la fecha actual del reporte, ejemplo 02/2006 automaticamente realice la otra consulta pero con el año pasado, estuve viendo y al parecer existe un comando DATEADD...

Gracias

Karl
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

RE:Ayuda con consulta SQL please!!!

Publicado por jose luis (2 intervenciones) el 17/05/2006 19:23:59
SE PUEDE RESOLVER UTILIZANDO ALIAS PARA LA MISMA TABLA:

Supongo que las tablas estan relacionadas por el campo "cod desc"

La consulta para:
fecha cod desc cant
02/2005 1111 peras dulces 50u
02/2006 1111 peras dulces 42u
seria algo parecido a esto (es complicado, nunca lo he hecho, a ver si funciona esto aunque con una subconsulta es facil):
select t1.fecha, t1.cod desc, t1.cant
from tabla t1
union
select t2.fecha, t2.cod desc, t2.cant
from tabla t2
where año(t1.fecha) == año(t2.fecha) -1
and dia (t1.fecha) == dia(t2.fecha);

La consulta para el segundo ejemplo es algo mas facil:
fechaactual añopasado cod desc cant actual cantidad año pasado
02/2006 02/2005 1111 peras dulces 50u 42u

select t1.fecha, t2.fecha, t1.cod desc, t1.cant, t2.cant
from tabla t1, tabla t2
where año(t1.fecha) == año(t2.fecha) -1
and dia (t1.fecha) == dia(t2.fecha)
and t1.cod == t2.cod;

NOTA: la funcion año se llama YEAR, la funcion dia se llama DAY , y la igualdad
no me acuerdo si era un igual o dos. Espero que te sirva.
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