对于连接多个表以查看来自多个源系统的聚合数据,UNION所有的替代方案是什么?我正在寻找超越T的解决方案.
假设我们有3个源表,并希望通过id连接它们:
TableA
id Adata
1 8383
2 2707
3 6181
4 6708TableB
id Bdata
1 2669
1 8582
2 6335
2 7355
3 7355
3 2277
4 2789
4 8566TableC
id Adata
1 2856
2 1364
3 4476
4 3311
4 8073我想要得到的结果表:

--我现在所做的获得它的原始方式(由UNION完成):

如果我们有许多列和许多表,通过创建由彼此之下的许多表和许多空表组成的大型表来达到预期的结果,似乎是非常令人沮丧和原始的解决方案。我认为,如果我们想加入不同的信息系统,如会计、工资、采购等,这是一个常见的问题。
最终目标是给和Excel用户聚合数据一个机会向下钻,仅限于选定的表。例如,通过双击第一个Bdata 11251中所需的结果表,用户将被扩展到只看到生成该数字的数据。但是,相反,用户得到了以下内容:

更新。我想保留一个在数据中向下钻取的机会。因此,如果我双击Excel中的结果表,我希望能够查看每个ID的所有细节。
发布于 2015-08-24 09:08:55
你应该用内连接。除非某些表中缺少某些in,否则Union (All)似乎没有必要:
Select coalesce(cast(i.id as varchar(10)), 'SUM')
, isnull(sum(A.data), '')
, isnull(sum(B.data), '')
, isnull(sum(C.data), '')
From (Select id From A
Union Select id From B
Union Select id From C
) as i
left Join A on A.id = i.id
left Join B on B.id = i.id
left Join C on C.id = i.id
group by grouping sets (i.id, ())分组集将添加总行。
https://stackoverflow.com/questions/32178223
复制相似问题