Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

estructura case

Estas en el tema de estructura case en el foro de Mysql en Foros del Web. hola ante todo muchas gracias me ayudan a encontrar el error del select case mysql> select year(fecha) as annio,(case month(fecha) when 1 then "enero" end)as ...
  #1 (permalink)  
Antiguo 21/08/2011, 10:22
Avatar de ednagiraldo2107  
Fecha de Ingreso: abril-2011
Mensajes: 22
Antigüedad: 13 años
Puntos: 0
De acuerdo estructura case

hola ante todo muchas gracias me ayudan a encontrar el error del select case


mysql> select year(fecha) as annio,(case month(fecha) when 1 then "enero" end)as
mes, from factura group by annio,mes;

gracias por la ayuda

Última edición por ednagiraldo2107; 21/08/2011 a las 10:41
  #2 (permalink)  
Antiguo 22/08/2011, 06:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: estructura case

Mira aquí un ejemplo:
http://www.forosdelweb.com/f86/como-...spanol-588482/
  #3 (permalink)  
Antiguo 22/08/2011, 08:34
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: estructura case

Hola ednagiraldo2107;

La liga que te pone Jurena corresponde a cómo quedaría el CASE-WHEN para convertir el mes a su nombre en español, pero no responde a tu pregunta de por qué tu código tiene error.

El problema en tu código está en la coma que pones después del AS Mes, antes del FROM

Código:
select year(fecha) as annio,
(case month(fecha) when 1 then "enero" end) as
mes, from factura group by annio,mes;
Al poner una coma estás indicando que se va a agregar un elemento a tu select, bórrala y no deberás tener problemas.

En cuanto a la solución que te pone Jurena, como verás es diferente la forma en que utiliza el CASE-WHEN. Aquí te dejo las comparación entre las dos alternativas:

Código MySQL:
Ver original
  1. mysql> insert into fechas values
  2.     -> ('2011-01-01'),('2011-02-01'),('2011-03-01'),('2011-04-01'),
  3.     -> ('2011-05-01'),('2011-06-01'),('2011-07-01'),('2011-08-01'),
  4.     -> ('2011-09-01'),('2011-10-01'),('2011-11-01'),('2011-12-01');
  5. Query OK, 12 rows affected (0.08 sec)
  6. Records: 12  Duplicates: 0  Warnings: 0
  7.  
  8. mysql> select * from fechas;
  9. +------------+
  10. | fecha      |
  11. +------------+
  12. | 2011-01-01 |
  13. | 2011-02-01 |
  14. | 2011-03-01 |
  15. | 2011-04-01 |
  16. | 2011-05-01 |
  17. | 2011-06-01 |
  18. | 2011-07-01 |
  19. | 2011-08-01 |
  20. | 2011-09-01 |
  21. | 2011-10-01 |
  22. | 2011-11-01 |
  23. | 2011-12-01 |
  24. +------------+
  25. 12 rows in set (0.00 sec)
  26.  
  27.  
  28. mysql> SELECT
  29.     -> CASE WHEN MONTH(fecha) = 1 THEN "enero"
  30.     -> WHEN MONTH(fecha) = 2 THEN "febrero"
  31.     -> WHEN MONTH(fecha) = 3 THEN "marzo"
  32.     -> WHEN MONTH(fecha) = 4 THEN "abril"
  33.     -> WHEN MONTH(fecha) = 5 THEN "mayo"
  34.     -> WHEN MONTH(fecha) = 6 THEN "junio"
  35.     -> WHEN MONTH(fecha) = 7 THEN "julio"
  36.     -> WHEN MONTH(fecha) = 8 THEN "agosto"
  37.     -> WHEN MONTH(fecha) = 9 THEN "septiembre"
  38.     -> WHEN MONTH(fecha) = 10 THEN "octubre"
  39.     -> WHEN MONTH(fecha) = 11 THEN "noviembre"
  40.     -> WHEN MONTH(fecha) = 12 THEN "diciembre"
  41.     -> ELSE "esto no es un mes" END AS MES FROM fechas;
  42. +------------+
  43. | MES        |
  44. +------------+
  45. | enero      |
  46. | febrero    |
  47. | marzo      |
  48. | abril      |
  49. | mayo       |
  50. | junio      |
  51. | julio      |
  52. | agosto     |
  53. | septiembre |
  54. | octubre    |
  55. | noviembre  |
  56. | diciembre  |
  57. +------------+
  58. 12 rows in set (0.00 sec)
  59.  
  60. mysql> SELECT
  61.     -> CASE MONTH(fecha)
  62.     -> WHEN 1 THEN "enero"
  63.     -> WHEN 2 THEN "febrero"
  64.     -> WHEN 3 THEN "marzo"
  65.     -> WHEN 4 THEN "abril"
  66.     -> WHEN 5 THEN "mayo"
  67.     -> WHEN 6 THEN "junio"
  68.     -> WHEN 7 THEN "julio"
  69.     -> WHEN 8 THEN "agosto"
  70.     -> WHEN 9 THEN "septiembre"
  71.     -> WHEN 10 THEN "octubre"
  72.     -> WHEN 11 THEN "noviembre"
  73.     -> WHEN 12 THEN "diciembre"
  74.     -> ELSE "esto no es un mes" END AS MES FROM fechas;
  75. +------------+
  76. | MES        |
  77. +------------+
  78. | enero      |
  79. | febrero    |
  80. | marzo      |
  81. | abril      |
  82. | mayo       |
  83. | junio      |
  84. | julio      |
  85. | agosto     |
  86. | septiembre |
  87. | octubre    |
  88. | noviembre  |
  89. | diciembre  |
  90. +------------+
  91. 12 rows in set (0.00 sec)

La segunda opción (que es la que estás tratando de implementar) sólo necesita hacer una conversión MONTH, mientras que la primer opción hace la conversión en cada caso, Ambas dan exactamente el mismo resultado.

Saludos
Leo.

Etiquetas: campos, multiplicar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:47.