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

problemas con consulta al poner 12 case solo me deja 10

Estas en el tema de problemas con consulta al poner 12 case solo me deja 10 en el foro de SQL Server en Foros del Web. tengo el siguiente problema e puesto 12 case para los 12 meses del año pero me envía este erro me deja poner solamente 10 case ...
  #1 (permalink)  
Antiguo 25/09/2010, 10:51
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
problemas con consulta al poner 12 case solo me deja 10

tengo el siguiente problema e puesto 12 case para los 12 meses del año pero me envía este erro me deja poner solamente 10 case que puedo hacer para solucionar esto


Server: Msg 125, Level 15, State 4, Line 11
Case expressions may only be nested to level 10.



Código SQL:
Ver original
  1. SELECT  CASE WHEN mes=12 THEN'Diciembre'ELSE
  2.         CASE WHEN mes=1 THEN'Enero'ELSE
  3.             CASE WHEN mes=2 THEN'Febero'ELSE
  4.         CASE WHEN mes=3 THEN'Marzo'ELSE  
  5.         CASE WHEN mes=4 THEN'Abril'ELSE
  6.         CASE WHEN mes=5 THEN'Mayo'ELSE
  7.         CASE WHEN mes=6 THEN'junio'ELSE
  8.         CASE WHEN mes=7 THEN'julio'ELSE
  9.         CASE WHEN mes=8 THEN'Agosto'ELSE
  10.         CASE WHEN mes=9 THEN'Septiembre'ELSE
  11.         CASE WHEN mes=10 THEN'Octuvre'ELSE
  12.                 CASE WHEN mes=11then'Noviembre' END END END END END END END END END END END END AS mes,
  13. SUM (prima_us) AS prima_us_PC,SUM (0) AS prima_us_BU,(0)AS prima_us_PC2,SUM(0) AS prima_us_BU2 FROM produ_comercial
  14. WHERE
  15. (manager = 'L'AND mes IN ('1','2','3','4','5','6','7','8','10','11','12') AND cia ='000169'AND linea ='Energy'AND YEAR IN (2009) )
  16. GROUP BY mes
  #2 (permalink)  
Antiguo 25/09/2010, 17:38
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 6 meses
Puntos: 85
Respuesta: problemas con consulta al poner 12 case solo me deja 10

El error es claro, no puedes anidar un CASE más de 10 veces, de todos modos, no creo que sea lo que estás buscando

Código:
SELECT   
 CASE mes
 WHEN 1 THEN 'Enero'
 WHEN 2 THEN 'Febrero'
 .... 
 ELSE 'Mes inválido'
 END
FROM produ_comercial
Saludos
  #3 (permalink)  
Antiguo 25/09/2010, 22:55
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Respuesta: problemas con consulta al poner 12 case solo me deja 10

bueno a pregunta es que solucon le puedo dar a esto son 12 los mces que estoy tratando de intepretarlos en los case
  #4 (permalink)  
Antiguo 27/09/2010, 10:14
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: problemas con consulta al poner 12 case solo me deja 10

Mucho ojo A83, el compañero Matanga ya te dió la solución, pero parece ser que no pusiste mucha atención en su código. Hay dos formas de utilizar la sentencia CASE-WHEN:

CASE buscada (Es la que tu pones en tu ejemplo):

CASE WHEN Tu Condicion THEN si es verdadera ELSE [.... Aquí puedes anidar otro case]
END

Tal como lo comenta Matanga, aquí puedes anidar hasta diez niveles.

CASE simple (Es la que te propone Matanga)

CASE Tu Variable
WHEN Valor1 THEN Si la variable es igual al valor 1
WHEN Valor2 THEN Si la variable es igual al valor 2
...
ELSE Si la variable tiene cualquier otro valor
END

Aquí en realidad nunca no estás anidando, así es que no hay problema para poner los valores que desees. Si tienes dudas consulta tu ayuda en línea.

Lo único que te faltaría es completa el código que te puso Matanga con todas las opciones y verás que funciona.

Una solución más formal es la creación de un catálogo de meses, donde el número de mes sería la llave y existiera una descripción. Simplemente tendrías que hacer un JOIN con tu catálogo para obtener la descripción, esta en particular sería mucho mas eficiente y podrías utilizarla con más de una tabla.

Y otra recomendación, mucho cuidado con la redacción:

bueno a pregunta es que solucon (¿qué trataste de decir con esto?)

Saludos.
Leo.
  #5 (permalink)  
Antiguo 16/11/2011, 20:54
 
Fecha de Ingreso: junio-2010
Mensajes: 2
Antigüedad: 13 años, 11 meses
Puntos: 0
Respuesta: problemas con consulta al poner 12 case solo me deja 10

Muchas gracias, Matanga y Leonardo_Josue, esto es lo que andaba buscando. Saludos

Etiquetas: case, poner
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:17.