2013-05-02 2 views
0

내 데이터베이스에이 테이블이 있습니다SQL Server에서 고객 계정 상태를 쿼리하는 방법은 무엇입니까?

*custmrsTble: (custID: PK,Int) - (Name: varchar(20)) 
============= 
custID  Name 
________________ 
1   Sam 
2   Tom 

ProductsTble: (prodID: PK,Int) - (prodName: varchar(20)) - (soldPrice: money) 
=========== 
prodID prodName soldPrice 
____________________________ 
1  Biscuits 20 
2  Butter  30 
3  Milk  10 

OrdersTbl: (orderID: PK,Int) - (orderDate: smallDateTime) - (custID: FK,Int) 
========== 
orderID orderDate custID 
____________________________ 
1   2013/4/2  1 
2   2013/4/2  2 
3   2013/4/3  1 
OrderDetails: (orderDetailsID : PK,Int)- (orderID: FK,Int) - (prodID: FK,Int) - (qntty: int) 
============= 
orderDetailsID orderID prodID qntty 
_______________________________________ 
1     1  1  2 
2     1  2  1 
3     1  3  2 
4     2  1  5 
5     3  1  1 
CashMoventsTble: (cashID : PK,Int)- (orderID: FK,Int) - (cashDate : smallDateTime) - (cashValue money) 
================ 
cashID orderID cashDate cashValue 
_____________________________________ 
1  1  2013/4/2 30 
2  2  2013/4/2 100 
3  1  2013/4/5 20 
4   

을 그래서,이 같은 고객의 상태를 반환하는 쿼리 할 :

Name TotalPurchase  TotalPayments  
_______________________________________ 
Sam  110    50 
Tom  100    100 

TotalPurchase = SUM (qntty) * soldPrice ---- > 모든 고객에 대한 모든 구매
TotalPayments = sum (cashValue) -----> 모든 고객에 대한 모든 지불액

정확히 어떻게 수행해야할지 확실하지 않습니다. 제발 도와주세요. 감사합니다. .

+0

집계 함수에는 "group by"절을 사용해야합니다. – OldProgrammer

+0

OldProgrammer : 모든 제품에 대해 표시 할 때 & 내가 필요한 것은 앞서 언급 한 것처럼 요약이 아니라 요약입니다. –

답변

0
SELECT c.Name 
    ,TotalPurchase = (
     SELECT SUM(p.soldPrice * d.qntty) 
     FROM OrderDetails d 
     INNER JOIN OrdersTbl o 
      ON d.orderID = o.orderID 
     INNER JOIN ProductsTbl p 
      ON p.prodID = d.prodID 
     WHERE o.custID = c.custID) 
    ,TotalPayments = (
     SELECT SUM(cm.cashValue) 
     FROM CashMoventsTble cm 
     INNER JOIN OrdersTbl o 
      ON o.orderID = cm.orderID 
     WHERE o.custID = c.custID) 
FROM custmrsTble c 
관련 문제