![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
![]() 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. |
![]() |
|
|
![]() |
|