Domanda

Sto cercando di ottenere tutti i valori distinti su 2 tavoli con un sindacato.

L'idea è quella di ottenere un conteggio di tutti i valori univoci nella colonna Columna senza ripete in modo che io possa avere un riepilogo di tutte le colonne che contengono un unico Columna.

Questo è quello che ho cercato (server 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
)
È stato utile?

Soluzione

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

I distinti extra sulla TableX e Tabley non sono necessari; otterranno spogliati nella clausola tmp.ColumnA. Dichiarazione di una tabella temporanea dovrebbe eliminare l'ambiguità che potrebbe aver impedito la query da eseguire.

Altri suggerimenti

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

Utilizzando una "unione" non tornerà duplicati. Se è stato utilizzato "UNION ALL" quindi duplicare valori Columna da ogni tabella sarebbe ritorno.

Per ottenere valori distinti nella query di unione si può provare questo

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top