Funzione SE in BAse

Salve a tutti.
Volevo sapere se era possibile, ed eventualmente come, inserire la funzione SE () in una query di un campo di Base.
Grazie

Ciao, l’HSQLdB (il motore di Base) non prevede la funzione SE. Al suo posto si può usare la funzione CASEWHEN(exp,v1,v2) ritorna v1 se exp è vera, v2 se falsa;

oppure CASE WHEN expr1 THEN v1[WHEN expr2 THEN v2] [ELSE v4] END ritorna v1 se expr1 è vera [ulteriori condizioni possono essere poste] altrimenti ritorna v4, oppure NULL se non c’è l’opzione ELSE.

Se la mia riposta ti ha aiutato, votala con :heavy_check_mark: (qui a sinistra)

Ciao Charlie.

Spiego qual è il problema.
Ho usato la prima riga di codice ma non ottengo esattamente il risultato sperato e volevo utilizzare la seconda ma non ho ben capito come funziona.

Ho un campo “Codice Tributo” che può assumere 5 valori che sono: 1019, 1020, 1040, -, vuoto (NULL)
L’istruzione che ho usato è la seguente:

CASEWHEN( "Codice Tributo" = '-', 0, CASEWHEN( "Codice Tributo" = 1040, "Imponibile" * 20 / 100, "Imponibile" * 4 / 100 ) )

L’istruzione funziona tranne per il caso campo vuoto perché in tal caso mi calcola

"Imponibile" * 4 / 100

invece di segnare zero.
Stavo pensando di utilizzare qualche operatore logico ma non ho idea di come inserirlo nella istruzione.
Intuisco che forse potrei utilizzare la seconda linea di codice che mi hai suggerito ma, come detto sopra, non l’ho capita.

Grazie

P.S. ma dove trovo un manuale con tutte queste istruzioni e come si inseriscono in base??

Ho provato la seguente istruzione

 CASE WHEN "Codice Tributo" = '-' THEN 0 [WHEN "Codice Tributo" = NULL THEN 0] [WHEN "Codice Tributo" = 1040 THEN "Imponibile" * 20 / 100] [ELSE "Imponibile" * 4 / 100] END, "R.A."

Ma mi da errore

  1. Devi annidiare più istruzioni:

    CASEWHEN( “Codice Tributo” = ‘-’, 0, CASEWHEN( “Codice Tributo” = 1040, “Imponibile” * 20 / 100, CASEWHEN( “Codice Tributo” = NULL,NULL,“Imponibile” * 4 / 100 ) ))

  2. Devi fare attenzione, il tipo dato deve coincidere: ‘-’ è una stringa, gli altri sono numeri.