2013-12-19 9 views
0

이 쿼리를 만드는 데 약간의 도움이 필요합니다. 나는 TableATableB에 합류하고 그것으로부터 가치를 얻습니다; TableATableC을 합치면 값을 얻습니다. 마지막으로 두 값을 모두 빼는 것입니다.3 부 쿼리 합류

JOIN을 많이 사용하는 단일 쿼리에서 이것을 작성하는 방법이나 2 개의 하위 쿼리를 수행 한 다음이를 빼는 방법을 모르겠습니다. 어쩌면 모두

SELECT SUM(A.quantity) From TableA JOIN Table B WHERE ... 
어쩌면 TableATableB 더 결과가없는 기회가 주어 다음

SELECT SUM(A.quantity) From TableA JOIN Table C WHERE ... 

하지만 TableATableC, 수행 또는 viceversa에, 또는 :

지금까지 내가 좋아하는 뭔가를 가지고 있지 않거나, 아니면 둘 다하지 않겠다. 나는 단지 할 수 없다. JOINTableATableBTableC

+0

결과가 나타나지 않으면 무엇을 할 계획입니까? 0을 사용하고 잠재적으로 음수로 끝나면 빼기가 가능합니까? –

+0

나는 마음 속에 골량을 가지고 있지만, 지금 당장 요구하는 것은 아니다. –

답변

0

당신은 cross join하여이 작업을 수행 할 수 있습니다

select coalesce(s1.q1, 0) - coalesce(s2.q2, 0) 
from (SELECT SUM(A.quantity) as q1 From TableA JOIN Table B WHERE ...) s1 cross join 
    (SELECT SUM(A.quantity) as q2 From TableA JOIN Table C WHERE ...) s2; 

는 결과 중 하나가 반환 NULLcoalesce() 취급 0 같은 값을 설정합니다.