2009-12-31 125 views
0

在我的SQL數據庫,我有表循環在SQL查詢中

1 Account_Customer -AccountID -CustomerID -Account_CustomerID

兩個賬戶 -AccountID - 剩餘

3個客戶 -CustomerID -Name -Sex -Age

4貸款 -LoanID -AMOUNT -BranchName

5 Loan_Customer -Loan_CustomerID -LoanID -CustomerID

,我想寫一個存儲過程 清單客戶與他們的帳戶數量在一起,在特定城市生活的性別和年齡,以及在特定分支機構擁有賬戶和/或貸款的總賬戶餘額,貸款數量和總貸款額。

我可以在我的程序中完成帳戶數量和總帳戶餘額,但我需要一個存儲過程來完成我的任務。

任何幫助將不勝感激。

+0

你想在一個查詢中的所有?或幾個單獨的查詢? – 2009-12-31 01:15:25

+1

我認爲您在帳戶表中缺少您想要執行的操作。你說你想過濾哪些客戶在某個分行有一個賬戶,但沒有與該賬戶相關的分行信息......或者如果有,我看不到它...... – Rory 2009-12-31 01:18:06

+1

提供的東西沒有它告訴我們一個客戶住哪個城市在 – 2009-12-31 01:18:50

回答

1

好吧,讓我們給這一個bash(雖然我仍然認爲我們缺少了幾件)

CREATE PROCEDURE SelectCustomerDetailsBySex 
    @Sex <your data type here> 
AS 
BEGIN 
    SELECT cus.CustomerID, 
    cus.Name, 
    COUNT(acc.AccountID) AS AccountCount, 
    SUM(acc.Balance) AS AccountBalance, 
    COUNT(loa.LoanID) AS LoanCount, 
    SUM(loa.Amount) AS LoanTotal 
    FROM Customers cus 
    LEFT OUTER JOIN Account_Customer ac ON cus.CustomerID = ac.CustomerID 
    LEFT OUTER JOIN Accounts acc ON ac.AccountID = acc.AccountID 
    LEFT OUTER JOIN Loan_Customer lc ON cus.CustomerID = lc.CustomerID 
    LEFT OUTER JOIN Loans loa ON lc.LoanID = loa.LoanID 
    WHERE cus.Sex = @Sex 
    GROUP BY cus.CustomerID, 
    cus.Name; 
END 

能行作爲一個例子,或者你想我做的另一個?

+0

沒有必要。謝謝! 但我收到一個錯誤: Msg 8120,Level 16,State 1,Line 1 列'Customers.ID'在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中。 – Kubi 2009-12-31 01:40:13

+0

哎呀,我怎麼能忘記組?給我一秒鐘,我會修好它... – Rory 2009-12-31 01:42:03

+0

好吧,它現在應該工作... – Rory 2009-12-31 01:45:10