加入Master表和两个事实表

时间:2018-05-23 18:00:42

标签: sql sql-server sql-server-2008

Iam在加入数据时遇到问题。我有如下表格

表1

ID  AMT Product
1   10   P1
2   20   P1
3   30   P2
4   40   P2
5   10   P3

表2

ID1  AMT1
1   10
1   20
1   30
2   20
3   10

表3

ID3 AMT3
1   20
1   40
2   50
5   20

表1是mater表,表2和3是事实表。 使用下面的查询加入主表和事实表后,我得到了Result 详见附件。我使用以下查询来加入表格。

SELECT * 
FROM [dbo].[Table_1] a 
left join [dbo].[Table_2] b on a.ID=b.ID1 
Left Join [dbo].[Table_3] c on b.ID1=c.ID2

我想加入所有3个表,加入汇总产品级别的AMT1数据后我需要跟随输出

Product Amt1
P1       80
P2       10

有人可以指导我如何做到这一点。

感谢

雷瓦

1 个答案:

答案 0 :(得分:0)

经过一番讨论,再看一下数据,我明白你在寻找什么,问题是什么。如果存在多个唯一组合,则AMT1和AMT2值将重复。下面的解决方案可能不是最有效的,但它使用UNION分别执行每个连接,AMT的空值不包含在查询的该部分中:

<head>

注意:这也可以解决连接逻辑中的问题。需要根据包含SELECT z.Product, SUM(z.AMT1), SUM(z.AMT2) FROM ( SELECT a.Product, b.AMT1, NULL as 'AMT2' FROM [dbo].[Table_1] a left join [dbo].[Table_2] b on a.ID=b.ID1 UNION ALL SELECT a.Product, NULL as 'AMT1', b.AMT2 FROM [dbo].[Table_1] a left join [dbo].[Table_3] b on a.ID=b.ID2 ) as 'z' GROUP BY z.Product; 的表格来连接两个列的两个表格,因为您要按Product字段进行分组,而不是加入ProductTable_2 < / p>