2010-11-11 36 views
0

我試圖創建一種'彙總'視圖,其中值應該從幾個不同的表中拉取([帳戶],[分支],[客戶],[員工],[交易],[標誌交易]) 。如何從SQL Server 2008 R2中將幾個不同表中的記錄拖入單個視圖?

因爲我不能在視圖中執行一些SELECT語句,所以我試圖用INNER JOINs來完成這個任務,這是我的問題所在。

這裏是我到目前爲止有:

CREATE VIEW Summary 
AS 
    SELECT NEWID() AS Summary_Id, 
    COUNT(C.Customer_Id) AS CustCount, 
    COUNT(A.Account_Id) AS AcctCount, 
    COUNT(T.Transaction_Id) AS TransCount, 
    COUNT(B.Branch_Id) AS BranchCount, 
    COUNT(E.Employee_Id) AS EmplCount, 
    CAST(SUM(A.Balance) AS INT) AS BalTotal, 
    COUNT(F.FlaggedTrans_Id) AS FlagCount 
    FROM dbo.Account A INNER JOIN 
    dbo.Customer C ON A.Customer_Id = C.Customer_Id INNER JOIN 
    dbo.Employee E ON A.Employee_Id = E.Employee_Id INNER JOIN 
    dbo.[Transaction] T ON A.Account_Id = T.Account_Id INNER JOIN 
    dbo.FlaggedTrans F ON E.Employee_Id = F.Employee_Id CROSS JOIN 
    dbo.Branch B 

倒也符合邏輯,但它造成的所有值回來爲NULL,或者0。我在做什麼錯?

回答

0

我將首先刪除CROSS JOIN,如果需要,將它放在where子句中(如WHERE My_ID IN(從分支中選擇ID)

另外,您不必加入表格,但選擇他們一個一個地列作爲另一個選項。下面是一些僞代碼:

SELECT 
(SELECT COUNT(thisfield) FROM Thistable) as ThisCnt, 
(SELECT COUNT(thatfield) FROM Thattable) as ThatCnt, 
[etc.] 
+0

Thanks M方舟,這正是我需要做的,但無論出於什麼原因,我都忽略圍繞子查詢放置(括號),這顯然導致SSMS拋出錯誤。 – 2010-11-15 14:14:11

+0

很高興幫助克里斯。 – 2010-11-15 22:28:11

0

如果您想將視圖構建爲一組選擇不相關的選擇,則可以使用UNION ALL。

0

我真的不知道這裏有什麼問題,但我可以建議你關閉你的內連接一個接一個,並運行你的選擇查詢,這樣你可以計算其內部連接導致了問題

相關問題