SQL para access y obtener datos en 3 rangos

Necesito ayuda para crear una SQL y obtener un cuadro de trabajadores con su salario, pero enmarcado en tres rangos: 1.- Aquellos que tienen un salario inferior a 1500 euros; 2.-Entre 1500 y 2000; 3. Superiores a 2000 euros.

Una Tabla se llama “TTrabDatosLaborales” y los títulos de campos:

IdTrabDL …….  Y SalarioDL

La segunda tabla se llama TTrabajadores y los títulos de campos entre otros son:

IdTrab, NomTrab, ASpellTrab

La SQL que se me ocurre es la que mas abajo indico pero me da error 3075, error en sintaxis, falta operador en la expresión de consulta.

miSql = "SELECT TTrabajadores.IdTrab, TTrabajadores.NomTrab, TTrabajadores.ApellTrab, TTrabDatosLaborales.SalarioDL" _

        & " CASE" _

& " WHEN TTrabDatosLaborales.SalarioDL < 1500 THEN 'Inferior a 1500 euros'" _

        & " WHEN TTrabDatosLaborales.SalarioDL >= 1500 AND TTrabDatosLaborales.SalarioDL <= 2000 THEN 'Entre 1500 y 2000 euros'" _

& " WHEN TTrabDatosLaborales.SalarioDL > 2000 THEN 'Superior a 2000 euros'" _

        & " END SELECT AS rango_salarial" _

        & " FROM TTrabajadores" _

        & " INNER JOIN TTrabDatosLaborales ON TTrabajadores.IdTrab = TTrabDatosLaborales.IdTrabDL"

2 Respuestas

Respuesta
2

El problema con tu consulta SQL es que Microsoft Access SQL no admite la cláusula CASE. En su lugar, debes usar la función IIf (una alternativa a CASE en Access).

Pruebe con este código

SELECT 
    TTrabajadores. IdTrab, 
    TTrabajadores. NomTrab, 
    TTrabajadores. ApellTrab, 
    TTrabDatosLaborales. SalarioDL,
    IIf(TTrabDatosLaborales. SalarioDL < 1500, 'Inferior a 1500 euros',
        IIf(TTrabDatosLaborales. SalarioDL BETWEEN 1500 AND 2000, 'Entre 1500 y 2000 euros',
            'Superior a 2000 euros')) AS rango_salarial
FROM 
    TTrabajadores
INNER JOIN 
    TTrabDatosLaborales 
ON 
    TTrabajadores.IdTrab = TTrabDatosLaborales.IdTrabDL;

Comentario:

Uso de IIf: Access usa IIf(condición, valor_si_verdadero, valor_si_falso) en lugar de CASE.

Anidación de IIf: Se encadenan condiciones para definir los tres rangos salariales.

Uso de BETWEEN: Se usa BETWEEN 1500 AND 2000 para definir el rango intermedio.

Alias rango_salarial: Se asigna el nombre correcto a la nueva columna.

Respuesta
1

Access tiene mas alternativas, por ejemplo la funcion Switch, con ella la condicion podria quedar asi:

Select ..... , Switch([SalarioDL]<1500,iInferior a 1500 euros',[SalarioDL] Between 1500 And 2000,'Entre 1500 y 2000 euros',[SalarioDL]>2000,'Superior a 2000 euros') AS rango_Salarial, ......

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas