2017-07-25 2 views
0

Exemple simplifié: Ma table a 4 colonnes: ID, Nom, Quantité et Parent. Voir l'imageTrouver le plus haut dans un groupe et mettre à jour une colonne basée sur

La colonne parente, dans la table actuelle, est actuellement vide et doit être remplie avec des entrées de la colonne "Nom".

ID est une colonne non unique avec plusieurs entrées dans la colonne 'Nom' ayant le même ID.

L'objectif est de trouver l'entrée de valeur maximale dans la colonne "Montant" pour n'importe quel ID et de remplir la colonne "Parent" avec l'entrée dans la colonne "Nom". Je vais poster une photo d'une table par exemple dans les commentaires

enter image description here

Répondre

2

La technique consiste à classer les noms dans chaque ID par montant dans une sous-requête, puis le joindre à la table source de mise à jour:

update my_table set "parent"="name" 
from (
    select id,"name",row_number() over (partition by id order by "amount" desc) 
    from my_table 
) t 
where my_table.id=t.id 
and t.row_number=1 
+0

Salut! Merci beaucoup :) – Jasmine

+0

@Jasmine - Marquer comme réponse si cela vous a aidé –

+0

@RossPresser fait! – Jasmine