Bỏ qua các vấn đề rõ ràng với thiết kế bảng của bạn như được ám chỉ trong tất cả các nhận xét và chấp nhận rằng điều này có thể xảy ra rất chậm trên một chiếc bàn lớn, đây là cách tôi có thể làm điều đó.
Đầu tiên ... tôi sẽ tạo một câu lệnh biến tất cả các hàng thành một danh sách lớn được phân tách bằng dấu phẩy.
DECLARE @tmp VarChar(max)
SET @tmp = ''
SELECT @tmp = @tmp + ColumnA + ',' FROM TableA
Sau đó, sử dụng bảng phân tách udf có giá trị được mô tả bởi bài viết SO này để chuyển chuỗi lớn đó trở lại thành một bảng có mệnh đề riêng biệt để đảm bảo rằng nó là duy nhất.
https://stackoverflow.com/a/2837662/261997
SELECT DISTINCT * FROM dbo.Split(',', @tmp)