none
Cambiar resultado de un campo por un nombre en especifico. RRS feed

  • Pregunta

  • Que tal amigos. tengo un problema al tratar de cambiar el resultado de un campo por un nombre en especifico.

    Procedimiento: Tengo una tabla llamada datos y una columna llamada cadena. lo que realizo es lo siguiente:

    --En la columna cadena tengo varias cadenas de string cada una tiene al rededor de 150 caracteres, lo que realizo es un substring para poder conseguir un codigo en especifico y lo realizo de la siguiente manera:

    select SUBSTRING(cadena,6,5) as Codigo from datos

    El resultado es el siguiente:

    Problema: El resultado que obtuve fue desplegado en una columa llamada codigo, los codigos son unicamente del 1 al 5 lo que no puedo realizar es poder hacer una condicion para cambiar el numero por un nombre por ejemplo: 

    quisiera que todos los codigos  "00001" que se obtuvieron de esa consulta aparecieran con el nombre de "Excelente".

    todos los codigos "00002" aparecieran con el nombre de "Bueno" etc con los demás códigos.

    Para poder tener un resultado similar a este:

    Sin tener que realizar cambios en la columna cadena de mi tabla datos.

    Agradezco mucho su apoyo amigos

               


    crossvi.gonzalez

    martes, 5 de septiembre de 2017 16:16

Respuestas

  • Hola que tal. 

    Puedes utilizar un CASE dentro del SELECT para formatear un resultado:

    SELECT 
    (Select CASE SUBSTRING(cadena,6,5) 
         When 1 THEN "Excelente"
     When 2 THEN "Malo"
    ....
    	else "Mejorar" END ) AS Codigo
    from datos

    Saludos


    Mariano K.

    • Propuesto como respuesta Willams Morales martes, 5 de septiembre de 2017 16:37
    • Marcado como respuesta Crossvi Gonzalez martes, 5 de septiembre de 2017 16:39
    martes, 5 de septiembre de 2017 16:28
  • Claro, es sólo la idea del uso de la instrucción CASE, si el valor lo obtienes mediante una expresión entonces escribe la expresión como parte del argumento de evaluación de la instrucción CASE:

    SELECT    
        CASE CONVERT(int, SUBSTRING(cadena,6,5))
    	   WHEN 1 THEN 'Excelente'
    	   WHEN 2 THEN 'Malo'
    	   ...
        END
    FROM
        TableName
    GO


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    martes, 5 de septiembre de 2017 16:37

Todas las respuestas

  • Utiliza la instrucción CASE para tomar una determinada acción según la evaluación de una expresión, por ejemplo:

    SELECT
        Codigo,
        CASE
    	   WHEN Codigo = '0001' THEN 'Excelente'
    	   WHEN Codigo = '0002' THEN 'Malo'
    	   ...
        END
    FROM
        TableName
    GO


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    martes, 5 de septiembre de 2017 16:23
  • Hola que tal. 

    Puedes utilizar un CASE dentro del SELECT para formatear un resultado:

    SELECT 
    (Select CASE SUBSTRING(cadena,6,5) 
         When 1 THEN "Excelente"
     When 2 THEN "Malo"
    ....
    	else "Mejorar" END ) AS Codigo
    from datos

    Saludos


    Mariano K.

    • Propuesto como respuesta Willams Morales martes, 5 de septiembre de 2017 16:37
    • Marcado como respuesta Crossvi Gonzalez martes, 5 de septiembre de 2017 16:39
    martes, 5 de septiembre de 2017 16:28
  • Si estaria perfecto, pero la columna codigo no existe es un alias que le agrego a una consulta, estuve probando pero aun me parece con error

    crossvi.gonzalez

    martes, 5 de septiembre de 2017 16:29
  • Fijate en mi respuesta anterior, utilizo el campo CADENA.

    Saludos


    Mariano K.

    martes, 5 de septiembre de 2017 16:35
  • Claro, es sólo la idea del uso de la instrucción CASE, si el valor lo obtienes mediante una expresión entonces escribe la expresión como parte del argumento de evaluación de la instrucción CASE:

    SELECT    
        CASE CONVERT(int, SUBSTRING(cadena,6,5))
    	   WHEN 1 THEN 'Excelente'
    	   WHEN 2 THEN 'Malo'
    	   ...
        END
    FROM
        TableName
    GO


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    martes, 5 de septiembre de 2017 16:37
  • Hola que tal. 

    Puedes utilizar un CASE dentro del SELECT para formatear un resultado:

    SELECT 
    (Select CASE SUBSTRING(cadena,6,5) 
         When 1 THEN "Excelente"
     When 2 THEN "Malo"
    ....
    	else "Mejorar" END ) AS Codigo
    from datos

    Saludos


    Mariano K.

    Mariano K. amigo te lo agradezco mucho, tu codigo me funciono a la perfección acabo de realizar pruebas y son satisfactorias gracias por el apoyo

    crossvi.gonzalez

    martes, 5 de septiembre de 2017 16:39
  • Claro, es sólo la idea del uso de la instrucción CASE, si el valor lo obtienes mediante una expresión entonces escribe la expresión como parte del argumento de evaluación de la instrucción CASE:

    SELECT    
        CASE CONVERT(int, SUBSTRING(cadena,6,5))
    	   WHEN 1 THEN 'Excelente'
    	   WHEN 2 THEN 'Malo'
    	   ...
        END
    FROM
        TableName
    GO


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    Willams Morales, gracias amigo tu codigo tambien me funciono a la perfección agradezco mucho tu apoyo.

    crossvi.gonzalez

    martes, 5 de septiembre de 2017 16:40