[QGIS-it-user] Tabella attributi - Calcolatore campi
Federico Gianoli
gianoli.federico a gmail.com
Mer 2 Mar 2022 03:03:10 PST
puoi mettere tutti i casi in un unico comando, in questo caso replica
WHEN *"stringa"='AA' *THEN '*aa*' le N volte che ti serve tipo così:
CASE WHEN *"stringa"='02' *THEN '200' WHEN *"stringa"='01' *THEN '100'
WHEN *"stringa"='03' *T HEN '300' WHEN *"stringa"='04' *THEN '400' ELSE
NULL END
Il giorno mer 2 mar 2022 alle ore 12:00 Franco Cazzola <
franco.cazzola a idroambiente.it> ha scritto:
> Grazie Federico per la pronta risposta
>
> Purtroppo ho circa 30 casi.
>
> Spero che la lunghezza della istruzione CASE non sia limitata nel numero
> di caratteri
>
> Ci sono altre soluzioni ?
>
> Franco
>
>
>
> *Da:* Federico Gianoli <gianoli.federico a gmail.com>
> *Inviato:* mercoledì 2 marzo 2022 11:20
> *A:* Franco Cazzola <franco.cazzola a idroambiente.it>
> *Cc:* qgis-it-user a lists.osgeo.org
> *Oggetto:* Re: [QGIS-it-user] Tabella attributi - Calcolatore campi
>
>
>
> Ciao,
>
>
>
> Dalla documentazione: CASE è usato per valutare una serie di condizioni e
> restituisce un risultato per la prima condizione incontrata. Le condizioni
> sono valutate sequenzialmente, e se una condizione è vera, la valutazione
> si ferma, e il corrispondente risultato è restituito. Se nessuna delle
> condizioni è vera, è restituito il valore nella clausola ELSE.
>
>
>
> prova con:
>
>
>
> CASE WHEN *"stringa"='02' *THEN '200' WHEN *"stringa"='01' *THEN '100'
> ELSE NULL END
>
>
>
>
>
>
>
> Il giorno mer 2 mar 2022 alle ore 11:07 Franco Cazzola <
> franco.cazzola a idroambiente.it> ha scritto:
>
> Buongiorno
>
> Non riesco a capire perché non funziona la seguente sequenza di operazioni.
>
> Devo aggiornare il campo unita in base ai valori del campo stringa.
>
> Esempio: aggiorno il campo unita con valore 200 se il campo stringa=02
>
> Uso la seguente sequenza:
>
> Nella tabella attributi apro il Calcolatore di campi
>
> *Flag* su Aggiorna campo esistente, scelgo il campo *unita* e nella
> espressione inserisco*:*
>
> *CASE WHEN "unita" IS NULL AND "stringa"='01' THEN '100' END*
>
> e ottengo quanto sotto riportato
>
>
>
> Ora se eseguo la stessa sequenza con
>
> *CASE WHEN "unita" IS NULL AND "stringa"='02' THEN '200' END*
>
> Mi aggiorna il campo unita con 200 ma sostituisce anche i precedenti
> valori.
>
> Perché ?
>
>
>
> Ho provato a sostituire il campo NULL di unita con un valore qualsiasi e
> ripetere la sequenza ma non cambia
>
>
>
> Grazie per ogni contributo
>
> Franco Cazzola
>
> _______________________________________________
> QGIS-it-user mailing list
> QGIS-it-user a lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/qgis-it-user
>
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20220302/4a7ddf39/attachment-0001.html>
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: image001.png
Tipo: image/png
Dimensione: 14149 bytes
Descrizione: non disponibile
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20220302/4a7ddf39/attachment-0002.png>
-------------- parte successiva --------------
Un allegato non testuale è stato rimosso....
Nome: image002.png
Tipo: image/png
Dimensione: 5543 bytes
Descrizione: non disponibile
URL: <http://lists.osgeo.org/pipermail/qgis-it-user/attachments/20220302/4a7ddf39/attachment-0003.png>
Maggiori informazioni sulla lista
QGIS-it-user