大量 Tables - 查找存在于多个 Table 中的值
Large Number of Tables - Find Values that Exist in More than One Table
我正在尝试使用微妙的、有时可能重叠的逻辑对一个非常大的数据集的一个元素进行分类。目前,我根据各自的分类逻辑填充了大约 18 个临时 table。
我需要做的是找到出现在多个 table 中的所有值,因此需要调整它们的分类逻辑,以免类别重叠。
我是否能够 运行 在所有这些 table 之间进行某种大规模连接以尝试找到重叠的分类?我将如何构建它?我应该考虑其他替代方法吗?
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
我正在尝试使用微妙的、有时可能重叠的逻辑对一个非常大的数据集的一个元素进行分类。目前,我根据各自的分类逻辑填充了大约 18 个临时 table。
我需要做的是找到出现在多个 table 中的所有值,因此需要调整它们的分类逻辑,以免类别重叠。
我是否能够 运行 在所有这些 table 之间进行某种大规模连接以尝试找到重叠的分类?我将如何构建它?我应该考虑其他替代方法吗?
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