À l'aide de l'union à plusieurs reprises distinctes sur le dessus des résultats de la finale
Je ne peux pas comprendre comment fusionner les 4 différentes colonnes à partir de 2 tables différentes ensemble dans une seule colonne de tous les résultats possibles, avec des doublons supprimés. Les noms réels sont différents, mais supposons que j'ai les deux tableaux suivants
Table1
- Champ1
- Champ2
- SomethingElse
Table2
- Champ1
- Champ2
- SomethingElse
Maintenant, à la fin, je voudrais fusionner tous les 4 de ces champs ensemble dans un grand champ, puis utilisez distinctes sur le dessus de cela pour éliminer tous les doublons, car il ya beaucoup d'entre eux. Le résultat final devrait être une seule colonne contenant toutes les valeurs possibles trouvé dans les 4 colonnes, sans dupliqué.
Quand je travaillais avec une seule table avec deux champs, je l'ai eu à travailler:
select distinct(Field1) from Table1 where SomethingElse = SomeVal
union
(select distinct(Field2) from Table1 where SomethingElse = SomeVal)
order by 1
(bien sûr, je souhaite avoir exécuté distinct
autour du résultat final plutôt que de chaque champ)
Maintenant j'ai besoin d'ajouter plus de 2 champs d'une autre table. Rien j'ai essayé a même, ne peut pas obtenir la syntaxe de droit.
select distinct ... from t1 union select ... from t2 union ...
, c'est à dire un seul distinct
sur la première sélection?
OriginalL'auteur Jerry Dodge | 2012-12-26
Vous devez vous connecter pour publier un commentaire.
En voici une:
- Je combiner les sous-requêtes à l'aide de
union all
et ensuite seulement lesdistinct
une fois sur le niveau extérieur.Depuis la deuxième chose que je voudrais savoir, c'est où ces valeurs sont utilisées, voici la requête:
as val
être dans tous les 4 de la déclaration? Ou juste le premier?Ce que vous suggérez est une bonne pratique, mais pas indispensable. La première sous-requête dans une union définit les noms de colonne. Dans ce cas, je viens de le sauver sur le typage.
De sens, merci!
OriginalL'auteur Gordon Linoff
Quelque chose comme ça devrait fonctionner. Juste à l'union de l'ensemble de votre sélectionne et placez-la dans un dans la ligne de vue et de mettre votre distinctes et de l'ordre par l'extérieur. J'ai utilisé de l'union de tous puisque vous allez faire un distinct une fois à l'extérieur de toute façon
OriginalL'auteur Brian White
SQL Server >= 2008
La première solution:
La seconde solution:
SQL Server >= 2005
La troisième solution:
La quatrième solution:
OriginalL'auteur Bogdan Sahlean