2009-12-31 10 views
0

Dans ma base de données Sql, j'ai tablesboucle dans une requête SQL

1 Account_Customer -AccountID -CustomerID -Account_CustomerID

2 Comptes -AccountID -Balance

3 Les clients -CustomerID -Nom -Sex -Age

4 Prêts -LoanID -Montant -BranchName

5 Loan_Customer -Loan_CustomerID -LoanID -CustomerID

et je veux écrire une procédure stockée pour Listing des clients ainsi que leur nombre de comptes , le solde total du compte, le nombre de prêts et le montant total du prêt, vivant dans une ville donnée, ayant donné le sexe et l'âge et ayant des comptes et/ou des prêts dans une succursale donnée.

Je peux faire le nombre de comptes et le total des soldes de comptes dans mon programme, mais j'ai besoin d'une procédure stockée pour mon affectation.

Toute aide serait grandement appréciée.

+0

Vous voulez tout savoir sur la même chose? Ou plusieurs requêtes séparées? –

+1

Je pense qu'il vous manque un champ dans la table des comptes pour ce que vous voulez faire. Vous avez dit que vous voulez filtrer où les clients ont un compte dans une certaine branche, mais il n'y a aucune information de branche associée au compte ... ou s'il y a, je ne peux pas le voir ... – Rory

+1

Il n'y a rien dans le fourni les tables qui nous indiquent dans quelle ville un client vit –

Répondre

1

Ok, permet de donner une fête ce (même si je pense toujours que nous manque quelques morceaux)

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 

Est-ce que faire à titre d'exemple, ou voulez-vous que je fasse une autre?

+0

pas nécessaire. Je vous remercie! Msg 8120, niveau 16, état 1, ligne 1 La colonne 'Customers.ID' n'est pas valide dans la liste de sélection car elle n'est contenue ni dans une fonction d'agrégat ni dans la clause GROUP BY. – Kubi

+0

Oups, comment pourrais-je oublier le groupe? Donnez-moi une seconde et je vais le réparer ... – Rory

+0

Bon, ça devrait marcher maintenant ... – Rory

Questions connexes