0
votes

Obtenez la dernière valeur pour chaque couple (nom, adresse)

J'ai le tableau suivant pour lequel je dois obtenir les valeurs les plus récentes pour le groupe (nom, adresse). Cela signifie que j'ai besoin d'avoir le max (heure) pour chaque couple (nom, adresse) et obtenir le last_read pour cette valeur de temps. Comment puis-je faire cela dans une requête SELECT?

table liens_data

sql

1 commentaires

Subquiery où vous vous regroupez sur nom et adressez et récupérez le nom Max (Time), l'adresse et rejoignez ce résultat avec votre TAML est le moyen le plus courant. Je suis à peu près sûr que vous pouvez trouver des exemples sur ce site Web lorsque vous recherchez «SQL Max valeur par groupe ".. Vous devez mettre à jour la question pour inclure également le résultat attendu en tant que tableau de données formaté


4 Réponses :


1
votes

Je pense que ci-dessous devrait fonctionner pour vous, vous devez utiliser groupe par code> et max code> xxx pré>

edit Strong> p>

Vous pouvez essayer d'autres réponses ou vérifier ci-dessous, qui utilise la table TEMP P>

select max([time]) as last_read_time,
    [name],
    [address]
into #temp_table
from yourTable
group by [name], 
    [address]

select last_read
from yourTable as yt
    inner join #temp_table t
        on yt.[name] = t.[name]
        and yt.[time] = t.last_read_time

IF OBJECT_ID('tempdb..#temp_table', 'U') IS NOT NULL


1 commentaires

J'ai essayé cette requête où j'ai ajouté la colonne Last_read, mais malheureusement, il donne les valeurs correctes pour max (heure) mais des valeurs erronées pour Last_Read.



0
votes

Dans la plupart des bases de données, une sous-requête corrélée est une bonne approche: xxx

en particulier, cela peut tirer parti d'un index sur (nom, adresse, heure) .


0 commentaires

0
votes

Vous pouvez utiliser row_number () code> si votre DBMS prend en charge

select * from 
(select *,row_number() over(partition by name,address order by time desc) rn
) t where t.rn=1


0 commentaires

0
votes

Aucune des solutions ci-dessus n'a fonctionné. J'ai finalement trouvé la requête suivante qui fonctionne: xxx

merci tout le monde.


0 commentaires