Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/04/2013, 07:07
yeyowave
 
Fecha de Ingreso: febrero-2010
Mensajes: 157
Antigüedad: 14 años, 2 meses
Puntos: 5
consulta when con impuestos o sin impuestos

Buenas tengo esta consulta when, se ejecuta perfectamente

Código MySQL:
Ver original
  1. WHEN pvp0 >=0 AND pvp0 <= 10 THEN '1 - 10'
  2. WHEN pvp0 >10 AND pvp0 <= 20 THEN '11 - 20'
  3. WHEN pvp0 >20 AND pvp0 <= 30 THEN '21 - 30'
  4. WHEN pvp0 >30 AND pvp0 <= 40 THEN '31 - 40'
  5. WHEN pvp0 >40 AND pvp0 <= 50 THEN '41 - 50'
  6. WHEN pvp0 >50 AND pvp0 <= 60 THEN '51 - 60'
  7. WHEN pvp0 >60 AND pvp0 <= 70 THEN '61 - 70'
  8. WHEN pvp0 >70 AND pvp0 <= 80 THEN '71 - 80'
  9. WHEN pvp0 >80 AND pvp0 <= 90 THEN '81 - 90'
  10. WHEN pvp0 >90 AND pvp0 <= 100 THEN '91 - 100'
  11. WHEN pvp0 >100 AND pvp0 <= 200 THEN '101 - 200'
  12. WHEN pvp0 >200 AND pvp0 <= 300 THEN '201 - 300'
  13. WHEN pvp0 >300 AND pvp0 <= 400 THEN '301 - 400'
  14. WHEN pvp0 >400 AND pvp0 <= 500 THEN '401 - 500'
  15. WHEN pvp0 >500 AND pvp0 <= 600 THEN '501 - 600'
  16. WHEN pvp0 >600 AND pvp0 <= 700 THEN '601 - 700'
  17. WHEN pvp0 >700 AND pvp0 <= 800 THEN '701 - 800'
  18. WHEN pvp0 >800 AND pvp0 <= 900 THEN '801 - 900'
  19. WHEN pvp0 >900 AND pvp0 <= 1000 THEN '901 - 1000'
  20. WHEN pvp0 >1000 AND pvp0 <= 1300 THEN '1201 - 1300'
  21. WHEN pvp0 >1300 AND pvp0 <= 1600 THEN '1501 - 1600'
  22. WHEN pvp0 >1600 AND pvp0 <= 2000 THEN '1801 - 2000'
  23. WHEN pvp0 >2000 AND pvp0 <= 2600 THEN '2301 - 2600'
  24. WHEN pvp0 >2600 AND pvp0 <= 3000 THEN '2601 - 3000'
  25. WHEN pvp0 >3000 AND pvp0 <= 3600 THEN '3301 - 3600'
  26. WHEN pvp0 >3600 AND pvp0 <= 4000 THEN '3601 - 4000'
  27. WHEN pvp0 >4000 AND pvp0 <= 4300 THEN '4001 - 4300'
  28. WHEN pvp0 >4300 AND pvp0 <= 4600 THEN '4301 - 4600'
  29. WHEN pvp0 >4600 AND pvp0 <= 5000 THEN '4601 - 5000'
  30. WHEN pvp0 >5000 AND pvp0 <= 5300 THEN '5001 - 5300'
  31. WHEN pvp0 >5300 AND pvp0 <= 5600 THEN '5301 - 5600'
  32. WHEN pvp0 >5600 AND pvp0 <= 6000 THEN '5601 - 6000'
  33. WHEN pvp0 >6000 AND pvp0 <= 6300 THEN '6001 - 6300'
  34. WHEN pvp0 >6300 AND pvp0 <= 6600 THEN '6301 - 6600'
  35. WHEN pvp0 >6600 AND pvp0 <= 7000 THEN '6601 - 7000'
  36. WHEN pvp0 >7000 AND pvp0 <= 7300 THEN '7001 - 7300'
  37. WHEN pvp0 >7300 AND pvp0 <= 7600 THEN '7301 - 7600'
  38. WHEN pvp0 >7600 AND pvp0 <= 8000 THEN '7601 - 8000'
  39. WHEN pvp0 >8000 AND pvp0 <= 8300 THEN '8001 - 8300'
  40. WHEN pvp0 >8300 AND pvp0 <= 8600 THEN '8301 - 8600'
  41. WHEN pvp0 >8600 AND pvp0 <= 9000 THEN '8601 - 9000'
  42. WHEN pvp0 >9000 AND pvp0 <= 9300 THEN '9001 - 9300'
  43. WHEN pvp0 >9300 AND pvp0 <= 9600 THEN '9301 - 9600'
  44. WHEN pvp0 >9600 AND pvp0 <= 10000 THEN '9601 - 10000'
  45. ELSE '10000 - 100000'
  46. END as valor  from tabla_productos p join tipo_iva ti on ti.id = p.iva join fabricantes fb on fb.id = p.fabricante where p.id_familia =1 group by valor order by pvp0 asc

Como habreis observado hay un join, y os preguntareis que hace ese join ahi??, pues bien, mi idea es que esta consulta muestre los rangos con impuestos o sin impuestos.

Actualmente el campo pvp0 esta en la base de datos en la tabla productos y es la base imponible.

esta tabla cuenta con un campo iva que especifica el id del impuesto que esta grabado en la tabla iva "id 1=18%,id 2=21%,id 3=10%..."

cuando quiero mostrar el precio de un producto con iva utilizo
Código MySQL:
Ver original
  1. ROUND(pvp0* ((porcentaje_iva / 100) + 1),2)

pero no logro que el when muestre los precios con impuestos o sin impuestos

he probado a
Código MySQL:
Ver original
  1. WHEN ROUND(pvp0* ((porcentaje_iva / 100) + 1),2)>4300 AND ROUND(pvp0* ((porcentaje_iva / 100) + 1),2)<= 4600 THEN '4301 - 4600'

pero nada, no hay medio, me asesorais??

Gracias