我有四个以父子关系构造的表。一个表具有一个主键,另外三个表(否则彼此不相关)将该主键作为外键。也就是说,表A有一个称为客户ID的主键。表B,C和D也有客户ID和一些其他信息。总结多表亲子关系的公共列
我想达到什么是总结表列2 B,C和D.我曾尝试:
SELECT dbo.a.primary_key,
SUM(dbo.b.column2) AS Expr1,
SUM(dbo.c.column2) AS Expr2,
SUM(dbo.d.column2) AS Expr3
FROM dbo.a
INNER JOIN dbo.b ON dbo.a.primary_key = dbo.b.column1
INNER JOIN dbo.c ON dbo.a.primary_key = dbo.c.column1
INNER JOIN dbo.d ON dbo.a.primary_key = dbo.d.column1
GROUP BY dbo.a.primary_key
这将返回什么。我也尝试了一个返回空值的左外连接。我还与以下线,这是我真正想实现试了一下:
SUM(dbo.b.column2) + SUM(dbo.c.column2) + SUM(dbo.d.column2) AS Expr1
这可能会下降到设计很糟糕,我可以有效地连接这三个表到一个表,但相信这是这样整洁。
一旦我解决了这个问题,我想将它扩展为表B,C和D的第3列,以便它们有一个日期字段,它是一个int并链接回日期表(E)。我想同时将表A,B,C和D连接到新创建的E,并按日期和a.primary_key分组。这是可能的,还是我需要重新考虑设计?
如何加入列'JOIN dbo.b.column2'到一个表,不应该是表吗? – user2989408
一旦你让这个人安顿下来,请举一个很好的例子 - 就像你在这里做的那样 - 为第二部分......也许在一个新的问题! –
对于错字感到抱歉。我忙于剥夺桌子和桌子的名字,并无意中改变了那个名字。这仍然不会返回结果 – TXL