PDA

Ver la Versión Completa : Como trabajar con vistas


chalys
05-08-2005, 04:08:16
Tengo una Tabla denomina Tipo_Salida, esta tiene un campo Salida que siempre va tomar estos los siguientes valores:

Nota: espero que se entiendan mis tablas(hice lo que pude)

Tabla Tipo_Salida

CSalida ........ Salida
...... 01... ........ Seguro
...... 02... ........ Programa
...... 03... ........ Venta

La otra tabla la denomino Ventas y tiene una columna CodigoSalida que es una llave foranea que hace referencia a la tabla Tipo_Salida

Tabla Ventas

Fecha ... Producto ...CSalida...Precio
..***............P1............01..........***....
..***............P1............02..........***....
..***............P1............03..........***....
..***............P2............01..........***....
..***............P2............03..........***....
..***............P3............03..........***....



El problema es el siguiente, tengo que hacer un reporte mensual de manera que los datos se visualicen de la siguiente manera, sumando la cantidad de productos que salieron, para cada tipo de salida:

Producto....Seguro.....Programa......Venta.....Total
......P1............1................1.................1..............3
......P2............1................0.................1..............2
......P3............0................0.................1..............1

Estaba pensando en hacer una vista pero no se como volver los valores en columnas recurro a ustedes para que me puedan ayudar…… con algo de codigo SQL o si existe alguna sugerencia para realizar esto se los agradecería de antemano.

vtdeleon
05-08-2005, 04:17:06
Saludos

No tengo las respuesto total a eso, pero te puedo recomenda a que estudies lo que esta en estos hilos: http://www.clubdelphi.com/foros/showthread.php?t=17253
http://www.clubdelphi.com/foros/archivo/viewtopic.php?t=16133&highlight=referencias+cruzadas

Crandel
05-08-2005, 05:56:18
Es una vista media complicada, una solución facil sería armarlo vos en tu programa a base de consultas mas sencillas, donde cada una sea la suma parcial de lo que necesitas.

La cantidad de consultas es igual N_Productos * N_salidas.

lgarcia
05-08-2005, 15:01:31
Hola:

Aunque no dices con que tipo de BD estas trabajando, casos similares al tuyo en SQL2000 se resuelve creando una tabla temporal con la estructura de salida que necesitas. Por ejemplo en un procedimiento almacenado

CREATE TABLE #temporal
(
producto char(50),
seguro int,
programa int,
venta int,
total int
)
INSERT INTO #temporal

SELECT producto, SUM(seguro), 0, 0, SUM(seguro)
FROM Ventas INNER JOIN
Tipo_salida ON Ventas.csalida = Tipo_salida.csalida
WHERE csalida = '01'
GROUP BY producto

UNION ALL

SELECT producto, 0, SUM(programa), 0, SUM(programa)
FROM Ventas INNER JOIN
Tipo_salida ON Ventas.csalida = Tipo_salida.csalida
WHERE csalida = '02'
GROUP BY producto

UNION ALL

SELECT producto, 0, 0, SUM(venta), SUM(venta)
FROM Ventas INNER JOIN
Tipo_salida ON Ventas.csalida = Tipo_salida.csalida
WHERE csalida = '03'
GROUP BY producto

SELECT producto, sum(seguro) seguro, sum(programa) programa, sum(venta) venta, sum(total)
FROM #temporal
GROUP BY producto

Con este tipo de consulta se puede lograr obtener casi cualquier resultado por dificil que parece.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer

chalys
08-08-2005, 04:00:04
hola amigos del foro muchas gracias por su ayuda, voy a tomar muy encuenta todos lo consejos que me dan gracias.....