Estou tentando remover duplicatas de um conjunto, mas as duplicatas estão em colunas diferentes, por exemplo, com esta tabela:
ColA, ColB, ColC, ColD
----------
1, 1, 'ABC', 'DEF'
----------
1, 1, 'DEF', 'ABC'
----------
1, 1, 'GHJ', 'LKJ'
----------
1, 1, 'LKJ', 'GHJ'
O que eu preciso para terminar é:
ColA, ColB, ColC, ColD
----------
1, 1, 'ABC', 'DEF'
1, 1, 'GHJ', 'LKJ'
Espero que faça sentido, alguém tem alguma ideia?
Este é o SQL-Server 2012.
Esta provavelmente não será a resposta certa, mas funciona para os dados que você nos forneceu.
Esta é uma maneira bastante complicada de fazer isso e tenho certeza de que provavelmente existem maneiras melhores, mas pode ser adaptada para lidar com mais colunas.
Essencialmente, ele reordena os dados nas colunas e, em seguida, seleciona as linhas distintas.
Usei a função de string dividida de Jeff Moden modificada por Aaron Bertrand e a modifiquei ainda mais para retornar string concatenada para todas as colunas em uma ordem classificada. Eu cruzei a aplicação da função com a tabela e usei o valor da coluna retornada para remover todas as duplicatas. Segue minha implementação.