我正在尝试从一组中删除重复项,但重复项位于不同的列中,例如使用此表:
ColA, ColB, ColC, ColD
----------
1, 1, 'ABC', 'DEF'
----------
1, 1, 'DEF', 'ABC'
----------
1, 1, 'GHJ', 'LKJ'
----------
1, 1, 'LKJ', 'GHJ'
我需要结束的是:
ColA, ColB, ColC, ColD
----------
1, 1, 'ABC', 'DEF'
1, 1, 'GHJ', 'LKJ'
希望这是有道理的,有没有人有任何想法?
这是 SQL-Server 2012。
这可能不是正确答案,但这适用于您提供给我们的数据。
这是一种相当复杂的方法,我相信可能有更好的方法,但它可以适应处理更多的列。
本质上,它对列中的数据进行排序,然后选择不同的行。
我使用了由Aaron Bertrand修改的Jeff Moden split string 函数,并进一步修改它以按排序顺序返回所有列的连接字符串。我将函数与表交叉应用,并使用返回的列值删除所有重复项。以下是我的实现。