8
votes

Sélectionnez des valeurs de colonne distinctes et non distinctes

Je veux exécuter une requête qui élimine les lignes en double en fonction des valeurs de Cola et de Colb. Cependant, je veux toujours retourner les valeurs de Colc et froid.

Voici un exemple simple de ce que j'ai jusqu'à présent: xxx

ou < PRE> XXX

L'une ou l'autre méthode ne me permet pas de renverser Colc, et de le froid à moins que je ne les vérifie comme des valeurs distinctes ou un groupe comme Cola et Colb. Je ne veux pas faire cela, seul le cola et le colb doivent être distincts et non colc ni froid. Je veux juste les retourner.

Des idées sur la façon dont je peux accomplir cela?


4 commentaires

En supposant qu'il existe plusieurs lignes dans Table1 avec un ensemble particulier de valeurs pour cola et COLB , quel ensemble de colc et froid Les valeurs voulez-vous être retournées? Les valeurs minimales? Valeurs maximales? Les «premières» ou «dernières» valeurs (auquel cas vous auriez besoin de nous dire comment commander les données afin que «d'abord» et «dernier» sont significatives)?


Pouvez-vous poster des données d'échantillonnage et le résultat souhaité?


@JusTrinave Pouvez-vous élaborer un peu plus sur la façon dont j'utiliserais "d'abord" et "Dernier"? Je crois que je voudrais toujours la première valeur. Comment ça ressemblerait avec mon exemple?


@Baxter - "Premier" et "Dernier" s'appuie sur un moyen de commander les données. S'il y a deux lignes dans Table1 avec identique cola et COLB valeurs, comment savez-vous quelle est la "première" ligne? Existe-t-il une colonne supplémentaire (un horodatage, par exemple ou une augmentation monotone table1_id )?


3 Réponses :


11
votes

Voulez-vous list_agg ? XXX

Si une valeur arbitraire ferait pour COLC et FROID, vous pouvez utiliser min () : xxx


1 commentaires

Je pense que toute valeur arbitraire fonctionnera pour moi dans ce cas. Je vais donner min un essai sur les colonnes que je ne souhaite pas grouper par.



2
votes

Le distinct s'applique à toutes les valeurs que vous sélectionnez, non seulement dans certaines colonnes. Dans votre cas, il s'appliquera à tous: Cola, Colb, Colc, froid. Il est impossible de sélectionner toutes les colonnes et de faire des distincts et certains non. La seule façon de le faire indiquée dans l'exemple de Gordon, c'est le seul exemple valide et la réponse.


1 commentaires

Je suis d'accord. J'ai essayé d'utiliser Min pour les colonnes que je me soucie d'être unique ou ordonnée.



0
votes

Peut-être utiliser des opérations de jeu de plaines

avec union et union tout (Voir http://docs.oracle.com/cd/b19306_01 /Server.102/b14200/queries004.htm )

Union Cola et Colb éliminera les entrées doublées dans ces colonnes, tandis que l'Union tout gardera toutes les valeurs du Colc et du froid


0 commentaires