none
condicion con campo creado en sql o access RRS feed

  • Pregunta

  • Hola amigos de la comunity, quisiera que me ayuden en query, tengo unos datos que al compararlos creo un nuevo campo con su alias respectivo, la consulta es, cual seria la sentencia para un WHERE con dicho alias?, mi query es el siguiente en access:

    SELECT
    F_INICIO AS FECHA_INICIO, 
    Switch (F_FIN IS NULL,'INDEFINIDO',F_FIN IS NOT NULL,F_FIN) AS FECHA_FIN, 
    Switch (F_FIN >=(Now()), 'VIGENTE',F_FIN  <(Now()) ,'SIN VIGENCIA',F_FIN IS NULL,'VIGENTE') AS CONDICION, 
    WHERE ????????????????
    AQUI QUISIERA SABER COMO USAR EL ALIAS CONDICION? EN CASO SERIA: WHERE CONDICION = 'SIN VIGENCIA'

    Gracias.


    Juan Fernando

    miércoles, 9 de agosto de 2017 19:49

Respuestas

  • Un alias que nombra una expresión de la lista de selección no tiene ámbito en la cláusula WHERE, por tanto no tienes mayor opción que volver a escribir la expresión y comparar contra el literal 'SIN VIGENCIA'. Sin embargo, nota que el literal 'SIN VIGENCIA' resulta cuando los valores de la columna 'F_FIN' son menores al valor que retorna la función NOW(), por tanto podrías simplificar la expresión a: 'WHERE F_FIN < NOW()', en ese sentido la columna de alias 'CONDICION' resulta ser 'SIN VIGENCIA', quedando la consulta de la siguiente manera:

    SELECT
        F_INICIO AS FECHA_INICIO, 
        SWITCH (F_FIN IS NULL, 'INDEFINIDO', F_FIN IS NOT NULL, F_FIN) AS FECHA_FIN, 
        'SIN VIGENCIA' AS CONDICION
    WHERE F_FIN < NOW()


    Nuestra profesión exige tener pasión por resolver problemas de una manera óptima y eficiente.
    • Propuesto como respuesta Moderador M martes, 15 de agosto de 2017 17:55
    • Marcado como respuesta Moderador M viernes, 18 de agosto de 2017 17:02
    miércoles, 9 de agosto de 2017 22:09