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

Uso de CASE

Estas en el tema de Uso de CASE en el foro de Mysql en Foros del Web. Compañeros, estoy aquí en MySQL para adjuntarles mi duda: Tengo la siguiente consulta con PHP: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT       ...
  #1 (permalink)  
Antiguo 30/01/2018, 13:29
pako1707
Invitado
 
Mensajes: n/a
Puntos:
Uso de CASE

Compañeros, estoy aquí en MySQL para adjuntarles mi duda:

Tengo la siguiente consulta con PHP:

Código SQL:
Ver original
  1. SELECT
  2.  
  3.         C.CUNO AS NO_CTE,
  4.         C.CUNM AS CLIENTE,
  5.         A.STN1,
  6.         A.IVNO1,
  7.         A.IVDAT8
  8.  
  9.  
  10.  
  11. FROM LIBP02H.MSPHDRS0 B
  12.  
  13. LEFT JOIN LIBP02H.MSPDETL0 A
  14.  
  15. ON A.IVNO1 = B.IVNO1
  16.  
  17. LEFT JOIN LIBP02.CIPNAME0 C
  18.  
  19. ON B.CUNO = C.CUNO
  20.  
  21. LEFT JOIN TS1600EFTP.SROEXC TC
  22.  
  23. ON SUBSTRING (CAST(A.IVDAT8 AS VARCHAR(10)),1,6) =  TC.EXTIML                  
  24. LEFT JOIN LIBPGTUSR.CSPTREF0 T04
  25.  
  26. ON A.IVNO1 = T04.INV16
  27.  
  28.  
  29. WHERE A.SOS1 IN
  30.  
  31. ('440','444','442','430','431','432','433','421','422','423','424','425','426','427','428','429','434','435','436','437','441')
  32.  
  33.  
  34.  
  35. ORDER BY A.IVDAT8 DESC


Uno de los campos de la columna IVDAT8 arroja de resultado "20180129" (fecha), necesito usar un CASE para que tome el 01 y lo convierta a ENE o 01 solamente en el resultado, tengo lo siguiente pero me arroja error:
Código SQL:
Ver original
  1. CASE
  2.               WHEN (SUBSTRING (CAST(A.IVDAT8 AS VARCHAR(10)),5,2) = '01')
  3.               THEN 'ENE'
  4.               END //Y ASÍ SUCESIVAMENTE POR CADA MES

Me arroja el error:

Palabra clave WHEN inesperada. Símbolos válidos: , FROM INTO.

¿en qué lugar debo ponerlo o qué error puedo tener en la sintaxis?

Les agradezco mucho cualquier ayuda compañeros.

Última edición por gnzsoloyo; 30/01/2018 a las 14:08
  #2 (permalink)  
Antiguo 30/01/2018, 13:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Uso de CASE

Código MySQL:
Ver original
  1.               WHEN (substring (CAST(A.IVDAT8 AS VARCHAR(10)),5,2) = '01')
  2.               THEN 'ENE'
  3.               END as mes

Creo que te falto el nombre para la columna
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/01/2018, 14:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Uso de CASE

Una duda: ¿Qué tipo de dato tiene la columna IVDAT8 en la tabla LIBP02H.MSPDETL0?

Por otro lado, mi consejo sería que no resolvieses esto con un CASE ni con una query, sino que saques la lógica de la consulta y la pases a una stored function que te devuelva lo que necesitas. Sería muchísimo mas simple.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: campo, case, ip, select, sql
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 02:22.