2017-11-14 5 views
0

주별 수입 및 주별 비용을 합산하고자합니다. (적립 - 균형 AS 소요)집계 값에 대한 연산 SQL

select * 
from (select sum(revenue) earned 
      , week(transaction_date) earned_week 

    from mytable 

    where year(transaction_date) = '1988' 

    group by week(transaction_date) 


    ) moneyin 


    inner join 
     (select sum(expenses) spent 
        , week(expense_date) spent_week 

      from mytable 

      where year(expense_date) = '1988' 

      group by week(expense_date) 


     ) moneyout 



    on moneyin.earned_week = moneyout.spent_week; 

지금, 나는이 돈의 차이와 돈 밖으로을 포함하는 열을 추가 할 것 같은 주간 집계로. 하지만 나는 그 문장을 삽입 할 수있는 수준을 압류하지 않는다. 어떤 조언이 필요합니까? 감사합니다

답변

1

난 당신이 정책의 맨 위에 있음을 할 수 있어야 말할 것 대신 *

을 선택 그래서 뭔가 같은 :

select earned week, 
earned, 
spent, 
earned - spent as balance, 

from (select sum(revenue) earned 
      , week(transaction_date) earned_week 

    from mytable 

    where year(transaction_date) = '1988' 

    group by week(transaction_date) 


    ) moneyin 


    inner join 
     (select sum(expenses) spent 
        , week(expense_date) spent_week 

      from mytable 

      where year(expense_date) = '1988' 

      group by week(expense_date) 


     ) moneyout 



    on moneyin.earned_week = moneyout.spent_week; 
1

당신은 다른 테이블로 moneyin 및 moneyout 데이터 그룹을 사용할 수 있으므로 아래의 쿼리가 작동합니다 :

select * , moneyin.earned - moneyout.spent as Difference 
    from (select sum(revenue) earned 
       , week(transaction_date) earned_week 

     from mytable 

     where year(transaction_date) = '1988' 

     group by week(transaction_date) 


     ) moneyin 


     inner join 
      (select sum(expenses) spent 
         , week(expense_date) spent_week 

       from mytable 

       where year(expense_date) = '1988' 

       group by week(expense_date) 


      ) moneyout 



     on moneyin.earned_week = moneyout.spent_week;