![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Con mucho gusto Gabo te explico mejor el problema, es probable que me haya enrevesado un poco al intentar ponerlo lo mas claro posible.
De todas formas, indagando en los libros de SQL que tengo, he podido aclarar lo que quiero, en realidad es convertir columnas en filas, es decir, yo hago una consulta para saber cuantas ventas ha tenido el PRODUCTO1, aqui no hay problema, pero en cambio si lo que quiero saber es la suma de dos productos en vez de uno, es decir TOTAL VENTAS DEL PRODUCTO1 Y TOTAL VENTAS DEL PRODUCTO2, la unica manera que se me ocurre de obtenerlo es haciendo dos consultas distintas, ya que en la tabla donde guardo los datos, hay un campo que contiene los productos, es decir, no tengo un campo para cada producto. Si hago una consulta para cada producto (que seria posible) se me viene otro problema, y es que tengo que listar los datos de la forma en que los puse en el primer mensaje, y con Qreport no se como hacerlo. Hay que tener en cuenta tambien que no todas las maquinas tienen los mismos productos. Para clarificar un poco este galimatias de productos te pongo a continuacion un ejemplo de como seria el listado a obtener: Cita:
Nota: no sale tabulado, pero es que no puedo introducir tabulaciones, pero se entiende que cada columna de numeros corresponde a una columna de la cabecera. En los libros que he consultado lo hace utilizando sentencias case y bucles when etc., pero resulta que esta para SQL Server y si lo intento en mi ordenador me da error, entiendo que es porque yo tengo el SQL que viene con Delphi 5. Espero haber aclarado un poco mas el tema, aunque me haya explayado un poco. Estoy haciendo pruebas utilizando consultas por producto y luego grabandolas en una tabla temporal, pero tarda mucho tiempo en hacerlo y no es factible para mi cliente (que por otro lado lo necesita con urgencia). Muchas gracias por ayudarme, espero que a alguno de ustedes se le ocurra algo, yo no dejo de intentarlo. Última edición por Espartaco fecha: 05-12-2007 a las 13:49:35. Razón: edito para poner el listado bien |
|
#2
|
|||
|
|||
|
Hola
Si el numero de productos es fijo, como dices 10 podrias hacer una consulta por cada uno de ellos usando la sentencia union all y te da como respuesta un solo dataset select maquina, dato1,dato2,dato3... from tabla where codigo='xx' union all select maquina, dato1,dato2,dato3... from tabla where codigo='yy' union all select maquina, dato1,dato2,dato3... from tabla where codigo='xx' ... En qreport yo logre hacer una de ventas para doce meses, el problema es que es estatico si te sirve esta solucion puedo detallarla mejor ojo depende totalmente que el numero de referencias sea fijo |
|
#3
|
||||
|
||||
|
Código:
LISTADO DE VENTAS
Nº MAQUINA CAFE SOLO LECHE CHOCOLATE CORTADO
1 15 0 10 25
2 25 12 23 7
3 20 42 0 14
4 35 47 11 35
6 0 8 4 15
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. Última edición por Gabo fecha: 05-12-2007 a las 17:03:39. |
|
#4
|
||||
|
||||
|
Dejame ver si he entendido:
Tienes una sola tabla con esta estructura: NMAQUINA = numero de maquina (INTEGER) FECHA = fecha de la venta (DATE) PRODUCTO = nombre del producto (STRING) CANTIDAD = unidades vendidas (INTEGER) Y quieres tener un informe donde en las columnas estén los productos y en las filas las máquinas. Yo haría dos consultas, una para generar los encabezados de columnas donde obtengo todos los productos ordenados por su nombre. Me aprovecho del evento OnPrint de las TQRLabel y su propiedad Value. La segunda consulta (los datos por fila) la ordeno por los productos de la misma forma y la agrupo por NMAQUINA.
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
|
#5
|
||||
|
||||
|
Gracias de nuevo, a ver
para hecospina, los productos pertenecen al mismo campo como muestro a continuacion: Código:
CONTENIDO DE LA TABLA NMAQUINA FECHA PRODUCTO CANTIDAD 3 21/11/07 CAFÉ SOLO 10 5 15/11/07 CHOCOLATE 3 3 22/11/07 CHOCOLATE 5 3 22/11/07 CORTADO 7 4 16/11/07 LECHE 6 5 15/11/07 CORTADO 2 3 23/11/07 LECHE 3 ETC… saludos |
|
#6
|
||||
|
||||
|
Para cambiar filas por columnas con paradox, están los decision Cube, échale un vistazo a la ayuda y a los componentes.
No podré dar más ayuda porque no los he usado. Espero te sirva Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#7
|
||||
|
||||
|
Cita:
Se trata de realizar la sumatoria (SUM) del campo cantidad y luego agrupar (group by) por producto y maquina. Algo así como:
__________________
Saludos, Gabo A menos que se indique lo contrario, el código estará hecho en C++Builder. |
|
#8
|
||||
|
||||
|
Gabo tengo que probar tu ejemplo, pero es que ahora no estoy en la oficina, en cuanto lo pruebe te digo.
Lepe he buscado el componente decision Cube en mi Delphi y no esta en la paleta, lo he buscado en la configuracion de la paleta y me aparece pero vacio de componentes. Tengo Delphi 5 Professional y no se si es que esta version no lo incluye. Tambien me gustaria saber como usar una version mas moderna de SQL o SQL Server y donde puedo conseguirlo. Gracias, quedo a la espera. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Consulta complicada | superhopi | MS SQL Server | 15 | 03-07-2006 23:53:59 |
| Consulta Complicada | tcp_ip_es | SQL | 2 | 09-06-2006 16:05:30 |
| Consulta complicada | Luciano M. | SQL | 6 | 01-12-2005 19:30:15 |
| Consulta complicada | cval | SQL | 4 | 21-09-2005 18:04:27 |
| Complicada consulta | mosorio | SQL | 3 | 12-08-2003 20:12:00 |
|