2009-11-18 6 views
0

je une table nommée LedgerReport qui contient le nom du client, numéro de facture de vente et le montant et je dois générer l'équilibre d'un sage client par une ligne sans utiliser les curseursde requêtes SQL pour générer l'équilibre

et i HAV envoyer u le rapport exemple ci-dessous afin s'il vous plaît envoyez-moi une suggestion pour résoudre mon problème ...

Create Table LedgerReport 
(
    Customer Nvarchar(64), 
    Billno Nvarchar(64), 
    Amount Decimal (10,3) 
) 

Insert Into LedgerReport Values ('Prem','Sb-001','5000') 
Insert Into LedgerReport Values ('Prem','Sb-002','7000') 
Insert Into LedgerReport Values ('Prem','Sb-003','2000') 
Insert Into LedgerReport Values ('Prem','Sb-004','8000') 
Insert Into LedgerReport Values ('Biswo','Sb-005','2000') 
Insert Into LedgerReport Values ('Biswo','Sb-006','3000') 
Insert Into LedgerReport Values ('Biswo','Sb-007','4000') 
Insert Into LedgerReport Values ('Biswo','Sb-008','5000') 

 

Select * from LedgerReport 
------------------------------------------------ 
Customer BillNo  Amount **Balance** 
---------------------------------------------- 
Prem  Sb-001 5000.000 **5000.000** 
Prem  Sb-002 7000.000 **12000.000** 
Prem  Sb-003 2000.000 **14000.000** 
Prem  Sb-004 8000.000 **22000.000** 
Biswo  Sb-005 2000.000 **2000.000** 
Biswo  Sb-006 3000.000 **5000.000** 
Biswo  Sb-007 4000.000 **9000.000** 
Biswo  Sb-008 5000.000 **14000.000** 

Répondre

2
SELECT Customer, BillNo, Amount 
    ,(SELECT SUM(Amount) 
       FROM LedgerReport 
       WHERE Customer = L.Customer 
       AND BillNo <= L.BillNo) 
     'Running Total' 
FROM LedgerReport L 
+0

numéro de projet de loi n'est pas un nombre entier ou, donc probablement le « <= » wouldnt travail. – Richie

+0

Cela semble être une séquence générée. –

+1

Le '<=' fonctionne sur les comparaisons de chaînes. –

0

 
SELECT Customer,SUM(Amount) 
FROM LedgerReport 
GROUP BY Customer 

+1

Biswo a besoin de chaque rangée avec l'équilibre mis à jour. – Richie

1

Vous pouvez également essayer d'éviter dans la liste sélectionne la colonne

SELECT l.Customer, 
     l.Billno, 
     l.Amount, 
     SUM(lBal.Amount) RunningTotal 
FROM LedgerReport L LEFT JOIN 
     LedgerReport lBal ON L.Customer = lBal.Customer 
          AND L.Billno >= lBal.Billno 
GROUP BY l.Customer, 
     l.Billno, 
     l.Amount 
Questions connexes