大量表 - 查找多个表中存在的值

时间:2015-06-24 16:34:58

标签: sql sql-server categorization

我试图通过使用细微差别来分类非常大的数据集的一个元素,有时可能重叠逻辑。目前,我根据每个相应的分类逻辑填充了大约18个临时表 我需要做的是找到多个表中出现的所有值,因此需要调整它们的分类逻辑,以便不重叠类别。
我是否能够在所有这些表之间运行某种大规模连接以尝试查找重叠的分类?我该如何构建呢?我还应该考虑其他替代方法吗?

1 个答案:

答案 0 :(得分:2)

WITH
  cte1([table_name],[value]) AS (
    SELECT 'table1',[value] FROM table1 UNION ALL
    SELECT 'table2',[value] FROM table2 UNION ALL
    SELECT 'table3',[value] FROM table3 UNION ALL
    SELECT 'table4',[value] FROM table4
  )
 ,cte2 AS (
    SELECT
      [table_name]
     ,[value]
     ,[count_by_value] = COUNT(*) OVER(PARTITION BY [value])
    FROM cte1
 )
SELECT *
FROM cte2
WHERE [count_by_value] > 1