update s set s.Date = f.Date from SecondDates s inner join (select Location, max(Date) Date from FirstDates group by Location) f on f.Location = s.Location What if more columns in SecondTable needs to be updated from FirstTable? E.g. Set s.Name= f.Name, s.CellNo= f.CellNo. I know that we can select more columns in select statement i.e. f but grouping them would present unwanted results.
3 Réponses :
Si les sont uniques, vous pouvez également les choisir dans la sous-requête ci-dessous. Cela ne fonctionnera que s'il n'y a qu'un seul nom unique et cellno disponible pour un seul endroit. Autre cas, cela ne fonctionnera pas.
ouais mais certains se répètent
Vous pouvez ajouter quelques échantillons de données de la table FirstDates avec un scénario de répétition. Cela aidera à définir la logique. Vous définissez également la logique pour le nom que vous souhaitez utiliser entre les valeurs répétées.
au lieu de Groupe par emplacement code> Utiliser
n'existe pas code> pour obtenir la ligne avec la date de la dernière
Date code> pour chaque
Emplacement code> de
PremiersDates code>:
Appliquer code> est probablement la solution la plus simple:
update s
set s.Date = fd.Date,
s.Name = fd.Name,
. . .
from SecondDates s join
(select fd.*,
row_number() over (partition by location order by date desc) as seqnum
) fd
on f.Location = s.Location
where seqnum = 1;