0
votes

Que dois-je faire si je souhaite regrouper les données à l'aide de la colonne, mais souhaitez également mettre en place des colonnes supplémentaires dans Sélectionner une instruction?

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.

0 commentaires

3 Réponses :


2
votes

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. XXX


2 commentaires

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.



0
votes

au lieu de Groupe par emplacement Utiliser n'existe pas pour obtenir la ligne avec la date de la dernière Date pour chaque Emplacement de PremiersDates : xxx


0 commentaires

1
votes

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;


0 commentaires