FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Un Campo/ Dos Columnas
Tengo Una tabla en MySQL, que contiene fecha, importe, tipo venta(tienda/almacén).
Quería hacer una Consulta, que me diera la fecha, las ventas almacén, y las ventas en tienda. Es decir según el tipo de venta que me las ponga en una columna o en otra. Lo he intentado con SELECT xxx WHERE, con IIF(xxx etc etc), pero siempre me da error de syntaxis. Me podéis Ayudar? Gracias |
#2
|
||||
|
||||
no se si lo he entendido bien.
necesitas tres columnas: fecha, venta_almacen y venta_tienda. si el tipo de venta es 'almacen' que te coloque el resultado en 'venta_almacen', en caso contrario lo coloque en 'venta_tienda'. no he usado MySQL, pero en Interbase lo haria asi: Código:
select fecha, importe as venta_almacen, 0 as venta_tienda from ventas where tipo_venta='almacen' union all select fecha, 0 as venta_almacen, importe as venta_tienda from ventas where tipo_venta='tienda' order by fecha si este tipo de sentencias no lo soporta MySQL (que me extraña) puedes hechar mano tambien de los campos calculados en Delphi.
__________________
“Plantad la semilla de la avaricia en la infértil tierra de la estupidez y obtendreis la bella flor de la mierda” (Confucio) |
#3
|
|||
|
|||
Gracias por tu respuesta Haron, pero....
Ya lo había probado, y funciona al 50%, me explico: La tabla, la añade al final, no la mezcla, fecha venta_almacen venta_tienda 01/01/2003 10,20 0 02/01/2003 30,10 0 03/01/2003 18,20 0 01/01/2003 0 11 02/01/2003 0 12 03/10/2003 0 23 Y como problema añadido, las venta_tienda, no tiene decimales ?¿ ¿se te ocurre alguna otra solucion? |
#4
|
||||
|
||||
Hola, por lo que comentas de hacerlo utilizando el iif, que no se si lo soporta MySql, sería:
Select fecha_venta, sum(iif(tipo_venta='almacen',importe,0)) as tot_almacen, sum(iif(tipo_venta='tienda',importe,0)) as tot_tienda from ventas group by fecha_venta Espero que te sirva. Un saludo. |
#5
|
|||
|
|||
Gracias Javiermorales, pero el problema continua, empiezo a estar desesperado, tanto si utilizo
sum(iif(tipo_venta='almacen',importe,0)) as tot_almacen o utilizo iif(tipo_venta='almacen',sum(importe),0) as tot_almacen el resultado es el mismo, "error de sintaxis".... Empiezo a creer que la única solución es crear una tabla local temporal donde volcar los resultados.... solución que no me gusta nada. Un saludo. |
#6
|
|||
|
|||
hola
en interbase tambien puedes hacer algo asi Código:
select codigo, (select sum(pvp) from articulos where codigo >= '0040000'), (select sum(pvp) from articulos where codigo < '0040000') from articulos a ver si asi te sirve |
#7
|
||||
|
||||
Hola, utilizando lo indicado por Cadetill, quedaría como:
Código:
Select fecha_venta, (select sum(importe) from ventas where tipo_venta='almacen'), (select sum(importe) from ventas where tipo_venta='tienda') from ventas Código:
Select A.fecha_venta, (select sum(B.importe) from ventas B where B.tipo_venta='almacen' and A.fecha_venta=B.fecha_venta), (select sum(C.importe) from ventas C where C.tipo_venta='tienda' and A.fecha_venta=C.fecha_venta) from ventas A |
#8
|
|||
|
|||
Gracias a todos por vuestra inestimable ayuda, pero.... "cuando todo falla, es el momento de leerse el manual"
En la Pág. de MySQl, esta el manual (muy buen manual, por si alguien le interesa) y después de releer y releer, he visto que en MySQL, el "iif" se escribe como un simple "if", con lo que una de las posibles soluciones seria: sum(if(tipo_venta='almacen',importe,0)) as tot_almacen A grandes problemas, soluciones muy tontas. Gracias a todos y Un saludo. |
|
|
|