Te lo puse en el post pasado y te lo vuelvo a comentar:
Cita: Y si no te marca un error, pero los resultados que obtienes no son los esperados, entonces postea algunos datos de ejemplo de tu tabla y dinos qué es lo que esperas obtener como salida.
Pero vayamos por partes: El problema que mencionas NO ESTÁ EN EL CASE-WHEN sino en la condición WHERE que estás colocando. Si el resultado de la consulta es un query empty esto quiere decir que NO HAY INFORMACIÓN QUE CUMPLA CON LA CONDICIÓN WHERE, eso no tiene nada que ver con el CASE WHEN. Observa este caso, supongamos que tenemos estos datos:
Código MySQL:
Ver original+--------+
| numero |
+--------+
| 1 |
| 2 |
| 3 |
| 4 |
+--------+
Si hacemos un CASE-WHEN para obtener la descripción de cada numero y hacemos un WHERE para buscar el número uno tenemos esto:
Código MySQL:
Ver original+--------+-------------+
| numero | descripcion |
+--------+-------------+
| 1 | UNO |
+--------+-------------+
Pero observa el caso del número 3, este número EXISTE EN LA TABLA, pero el CASE-WHEN NO CONSIDERA ESTE CASO... el resultado NO ES UN EMPTY QUERY sino un registro con el campo descripción NULL:
Código MySQL:
Ver original+--------+-------------+
| numero | descripcion |
+--------+-------------+
+--------+-------------+
Observa, ESTE SI ES UN PROBLEMA CON EL CASE-WHEN ya que no considera todos los casos, pero qué pasa si buscamos el numero 5 en la tabla??? el resultado es un EMPTY QUERY, como el que dices:
Esto quiere decir que en la tabla NO EXISTE NINGÚN REGISTRO QUE CUMPLA LA CONDICIÓN WHERE, y aquí nada tiene que ver si el CASE-WHEN está correcto...
Perdóname, pero no termino de entender qué es lo que estás tratando de obtener...
Supongo que tu problema se refiere a determinar que ISR (impuesto sobre la renta) se asigna a determinado sueldo o salario, pero depende mucho de cómo tienes almacenada la información. Te pido otra vez, postea la estructura completa de tus tablas, pon algunos datos de ejemplo y dinos qué es lo que esperas obtener como salida.
Saludos
Leo.