有人可以给我一个解决这个问题的想法吗?查找表中的2列具有相同的数据,我们不知道列是相同的。
我可以将部分数据移到excel中进行检查吗?
我有大约39行和2B行
输出应仅显示常见的列或某些常见的
输出空值正在困扰着我。
提前致谢。
答案 0 :(得分:1)
如果您有39列,并希望每个列都进行评估,那么可以评估741列配对。这可以以简洁的方式做到但我不建议将其用于20亿行!
SELECT V1.name,
V2.name
FROM YourTable T WITH (TABLOCKX)
CROSS APPLY (SELECT (SELECT T.*
FOR xml path('row'), elements, type)) CA(X)
CROSS APPLY CA.X.nodes('/row/*') N1(n)
CROSS APPLY CA.X.nodes('/row/*') N2(n)
CROSS APPLY (VALUES(n1.n.value('local-name(.)', 'sysname'), n1.n.value('.', 'nvarchar(4000)') )) V1(name, val)
CROSS APPLY (VALUES(n2.n.value('local-name(.)', 'sysname'), n2.n.value('.', 'nvarchar(4000)') )) V2(name, val)
WHERE V2.name < V1.name
AND V1.val = V2.val
GROUP BY V1.name,
V2.name
HAVING COUNT(*) = (SELECT COUNT(*)
FROM YourTable)
您应首先分析列中的值。获取所有列的MIN
,MAX
和COUNT
(对于数字列,也可能获得其他聚合数据)。放弃COUNT
不等于整行数的任何列,因为这些列与您对NULLs
所需处理的任何内容都不匹配,并标识具有相同MIN
和{{的列的列数1}}进一步调查。
如果您对示例数据执行此操作,您会发现唯一值得调查的对是MAX
和Col1 <-> col3
。因此,您可以进行更集中的查询,以确定是否确实如此。
Col2 <-> col6