Tengo una consulta que se parece a esto.
select case
when salary<5000
then date1
else date2
end "app"
from employees
order by app desc;
Aquí estoy imprimiendo el valor de la columna date1 si el salario del empleado es menor que 5000 y date2 si su salario es mayor que 5000. Ahora quiero aplicar un filtro adicional en la fecha que recibo de esta consulta, es decir, mostrar solo aquellos registros donde la fecha devuelta es en los últimos 7 días. Puedo usar el sinónimo de "aplicación" en orden por cláusula, pero cuando trato de usarlo en la cláusula where, arroja un error de tiempo de compilación. ¿Cómo se puede aplicar este filtro?
Nota: esta consulta se ejecutará en Oracle.
Puede usar la expresión completa en la cláusula where
SELECT CASE WHEN salary < 5000 THEN date1 ELSE date2 END "app" FROM employees
WHERE CASE WHEN salary < 5000 THEN date1 ELSE date2 END >= SYSDATE - 7
ORDER BY "app" DESC;
o use su consulta original como una subconsulta:
SELECT "app"
FROM (SELECT CASE WHEN salary < 5000 THEN date1 ELSE date2 END "app" FROM employees)
WHERE "app" >= SYSDATE - 7
ORDER BY "app" DESC;
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras