2009-12-31 2 views
0

В моей базе данных Sql, у меня есть таблицыLoop в запросе SQL

1 Account_Customer -AccountID -CustomerID -Account_CustomerID

2 Accounts -AccountID -Баланс

3 Клиенты -CustomerID -Name -Sex -Age

4 Кредиты -LoanID -Amount -BranchName

5 Loan_Customer -Loan_CustomerID -LoanID -CustomerID

, и я хочу, чтобы написать хранимую процедуру для Листинг клиентов вместе с их количеством счетов , общие остатки по счетам, количество кредитов и общие суммы займа, проживающие в данном городе, предоставив пол и возраст и имеющие счета и/или займы в данной отрасли.

Я могу сделать количество учетных записей и общий баланс в моей программе, но мне нужна хранимая процедура для моего задания.

Любая помощь была бы принята с благодарностью.

+0

Вы хотите все это в одном запросе? Или несколько отдельных запросов? –

+1

Думаю, вам не хватает поля в таблице учетных записей для того, что вы хотите сделать. Вы сказали, что хотите отфильтровать, где у клиентов есть учетная запись в определенной ветке, но нет информации о филиале, связанной с учетной записью ... или если есть, я не вижу ее ... – Rory

+1

В этом нет ничего таблицы, которые сообщают нам, в каком городе живет клиент –

ответ

1

Хорошо, позволяет дать этому Баш (хотя я все еще думаю, что мы пропустили несколько штук)

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, уровень 16, состояние 1, строка 1 Столбец «Customers.ID» недопустим в списке выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY. – Kubi

+0

К сожалению, как я мог забыть группу? Дайте мне секунду, и я исправлю это ... – Rory

+0

Хорошо, теперь он должен работать ... – Rory