Ignorant les problèmes évidents avec la conception de votre table comme évoqué dans tous les commentaires et acceptant que cela puisse s'avérer très lent sur une immense table, voici comment je pourrais le faire.
Tout d'abord... je créerais une déclaration qui transformerait toutes les lignes en une seule grande liste délimitée par des virgules.
DECLARE @tmp VarChar(max)
SET @tmp = ''
SELECT @tmp = @tmp + ColumnA + ',' FROM TableA
Ensuite, utilisez la division udf de table décrite par cet article SO pour transformer cette chaîne massive en une table avec une clause distincte pour vous assurer qu'elle est unique.
https://stackoverflow.com/a/2837662/261997
SELECT DISTINCT * FROM dbo.Split(',', @tmp)