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
有人可以指导我如何做到这一点。
雷瓦
答案 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
字段进行分组,而不是加入Product
和Table_2
< / p>