query ms-access select-case

ms-access - query - iif access



¿Cuál es el equivalente de Select Case en Access SQL? (3)

Tengo una consulta que incluye campos llamados saldo de apertura y comisiones . Me gustaría calcular los valores de las comisiones según el desequilibrio de apertura , similar a este bloque Select Case en Access VBA:

Select Case OpeningBalance Case 0 To 5000 commission = 20 Case 5001 To 10000 commission = 30 Case 10001 To 20000 commission = 40 Case Else commission = 50 End Select

Pero dado que Access no permite Select Case en una consulta, ¿cómo puedo lograr mi objetivo en Access SQL?


Considere la función de cambio como una alternativa a múltiples expresiones IIf() . Devolverá el valor del primer par de expresión / valor donde la expresión se evalúa como True e ignorará los pares restantes. El concepto es similar al enfoque SELECT ... CASE al que se hace referencia pero que no está disponible en Access SQL.

Si desea mostrar un campo calculado como commission :

SELECT Switch( OpeningBalance < 5001, 20, OpeningBalance < 10001, 30, OpeningBalance < 20001, 40, OpeningBalance >= 20001, 50 ) AS commission FROM YourTable;

Si desea almacenar ese valor calculado en un campo llamado commission :

UPDATE YourTable SET commission = Switch( OpeningBalance < 5001, 20, OpeningBalance < 10001, 30, OpeningBalance < 20001, 40, OpeningBalance >= 20001, 50 );

De cualquier manera, vea si encuentra que Switch() más fácil de entender y administrar. Múltiples IIf()s puede volverse alucinante a medida que crece la cantidad de condiciones.


Puedes hacerlo a continuación:

select iif ( OpeningBalance>=0 And OpeningBalance<=500 , 20, iif ( OpeningBalance>=5001 And OpeningBalance<=10000 , 30, iif ( OpeningBalance>=10001 And OpeningBalance<=20000 , 40, 50 ) ) ) as commission from table