Question

Je suis en train d'obtenir toutes les valeurs distinctes sur 2 tables à l'aide d'une union.

L'idée est d'obtenir un compte de toutes les valeurs uniques dans la colonne COLUMNA sans répétitions pour que je puisse obtenir une somme de toutes les colonnes qui contiennent un COLUMNA unique.

est ce que j'ai essayé (serveur SQL Express 2008)

select 
    count(Distinct ColumnA) 
from 
( 
    select Distinct ColumnA as ColumnA from tableX where x = y
    union
    select Distinct ColumnA as ColumnA from tableY where y=z
)
Était-ce utile?

La solution

SELECT COUNT(distinct tmp.ColumnA) FROM ( (SELECT ColumnA FROM TableX WHERE x=y) 
UNION (SELECT ColumnA FROM TableY WHERE y=z) ) as tmp

Les TableX supplémentaires sur concepts distincts et TABLEY ne sont pas nécessaires; ils se dépouillèrent dans la clause tmp.ColumnA. Déclarant une table temporaire devrait éliminer l'ambiguïté qui pourrait avoir empêché votre requête d'exécution.

Autres conseils

SELECT COUNT(*)
FROM
(
SELECT DISTINCT ColumnA From TableX WHERE x = y
UNION
SELECT DISTINCT ColumnA From TableY WHERE y = z
) t

L'utilisation d'un « UNION » ne reviendra pas en double. Si vous avez utilisé « UNION ALL » puis dupliquer les valeurs COLUMNA de chaque table SERAIT retour.

Pour obtenir des valeurs distinctes dans la requête Union, vous pouvez essayer

Select distinct AUnion.Name,AUnion.Company from (SELECT Name,Company from table1 UNION SELECT Name,Company from table2)AUnion
SELECT DISTINCT Id, Name
FROM   TableA
UNION ALL
SELECT DISTINCT Id, Name
FROM   TableB
WHERE  TableB.Id NOT IN (SELECT Id FROM TableA)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top