2014-02-16 2 views
1

여기에 2 개의 테이블이 있습니다 첫 번째 테이블은 acnumber 열 10 행과 opening_balance 열 10 행으로 구성됩니다. 두 번째 테이블은 transaction_type 열에 'Deposit'또는 'Withdrawal'및 transaction_amount 열로 언급 된 트랜잭션을 여러 번 수행 한 열의 acnumber 중 3 개로 구성됩니다.가능한 경우 열 추가

그래서 2 다음 균형을 열어 추가하고 0 내가이

select a1.acnumber,a1.opening_balance+if (a1.acnumber not in (a2.acnumber),0,sum(a2.transaction_amount)) 
from account a1 left join trandetails a2 
on a1.acnumber=a2.acnumber 
where a2.transaction_type like'Deposit' 
group by a2.acnumber; 

뭔가를 시도 즉, 테이블에서 사용할 균형 + deposits.If 어떤 거래를 여는없는 한 모든 acnumber과 예금을 선택해야하지만 반환 오직 두 테이블에 언급 된 acnumber.Any 제안 ???

답변

1

쿼리를 여러 번 변경해야합니다. where은 예를 들어 left outer join을 실행 취소합니다. 이 조건을 on 절로 이동해야합니다. 또한 group by 열은 집계 함수에없는 select의 열이어야합니다.

그래서, 아주 잘

select a1.acnumber, a1.opening_balance + coalesce(sum(a2.transaction_amount), 0) 
from account a1 left join 
    trandetails a2 
    on a1.acnumber = a2.acnumber and 
     a2.transaction_type like 'Deposit' 
group by a1.acnumber, a1.opening_balance; 
+0

작품을 시도, 대단히 감사합니다 !!!!! – Yuvi