2017-07-20 1 views
0

J'ai une table avec des colonnes de noms 'Nom', 'Produit', 'Valeur', 'Date de mise à jour'. Je veux avoir une instruction SQL qui sélectionne les valeurs uniques des colonnes «Nom», «Produit», «Valeur», mais de manière à ce qu'elles soient classées du plus récent au moins récent «Date de mise à jour». Si je retourne la sortie d'une telle instruction SQL select, je pourrais facilement obtenir, disons les trois noms ou les trois produits, trois valeurs, qui avaient les mises à jour les plus récentes. Y a-t-il une instruction SQL que je pourrais utiliser?Requête SQL SELECT DISTINCT WHERE BY

Je pense avoir une instruction SQL séparée pour chacune des colonnes: 'Nom', 'Produit', 'Valeur'. Et avoir une instruction ORDER BY quelque part. Des pensées?

+0

** [modifier] ** votre question et ajouter quelques exemples de données et les résultats attendus sur la base de ces données. [** Texte formaté **] (http://stackoverflow.com/help/formatting) s'il vous plaît, [aucune capture d'écran] (http://meta.stackoverflow.com/questions/285551/why-may-i-not -upload-images-of-code-on-so-when-ask-a-question/285557 # 285557). Ne pas poster de code ou d'informations supplémentaires dans les commentaires –

+0

Quels [DBMS] (https://fr.wikipedia.org/wiki/Database) utilisez-vous? Postgres? Oracle? DB2? Oiseau de feu? –

Répondre

2

Vous devez passer à un agrégat pour obtenir la date maximale pour le tri:

select Name, Product, Value 
from tab 
group by Name, Product, Value 
order by MAX(UpdateDate) desc 
+0

Merci! Juste pour clarifier, cette requête obtiendrait les entrées uniques composées des colonnes Nom, Produit, Valeur, qui ont le plus grand UpdateDate. Si je souhaite que l'entrée unique ne comporte pas les trois colonnes Nom, Produit, Valeur mais plutôt Nom seul ou Produit seul ou Valeur seule, j'aurais besoin d'exécuter des instructions séparées, n'est-ce pas? Comme dans: sélectionnez Nom dans le groupe d'onglets par Ordre de nom par MAX (UpdateDate) desc, sélectionnez Produit dans le groupe d'onglets par Ordre de produit par MAX (UpdateDate) desc, .... etc – Diana

+1

@Diana: Oui, il renvoie l'unique ' Name, Product, Value' * combinaisons * et trie par le dernier 'UpdateDate'. Si vous voulez faire cela pour chaque colonne, vous aurez besoin de trois choix plus UNION ALL. – dnoeth