我有四個以父子關係構造的表。一個表具有一個主鍵,另外三個表(否則彼此不相關)將該主鍵作爲外鍵。也就是說,表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