#1 Fri 11 November 2022 09:57
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
QGIS: Calculer un ID ordonne depuis un champ
Salut à tous,
Je dois calculer un champ d'identifiant ordonné selon les valeurs d'un autre champ.
J'arrive bien à le faire en SQL avec cette syntaxe :
Code:
SELECT ROW_NUMBER() OVER(ORDER BY MonChamp) FROM MaTable
Mais ça m'oblige à créer une couche virtuelle pour ensuite rappatrier les valeurs via une jointure dans ma table.
Est-il possible de le faire directement avec la calculatrice de champs ?
Je n'y ai trouvé que la variable @row_number , mais je ne sais pas si on peut l'affiner en précisant un champ de tri ?
Merci pour vos conseils
Sylvain M.
Hors ligne
#2 Fri 11 November 2022 10:42
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS: Calculer un ID ordonne depuis un champ
C'est bon, j'ai trouvé ça ici :
Code:
array_find( array_agg($id, order_by:="ORDER_FIELD"), $id) +1
Ça marche très bien !
Sylvain M.
Hors ligne
#3 Fri 11 November 2022 10:52
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: QGIS: Calculer un ID ordonne depuis un champ
Bon, j'ai quand même une petite "question bonus" : comment faire un ORDER BY MonChamp DESC avec la fonctionn array_agg ?
J'y suis parvenu puisque mon champ de tri et numérique, en le multipliant par -1, mais si j'avais eu un champ TXT, ça n'aurait pas fonctionné.
Code:
array_find( array_agg($id, order_by:="MonChamp"*-1), $id) +1
Si quelqu'un a une écriture plus propre et qui fonctionne avec les champs TXT, je prends !
Sylvain M.
Hors ligne