我需要一些帮助才能创建此查询。我正在加入TableA
和TableB
并从中获取价值;然后加入TableA
和TableC
并获取值。最后,我减去了两个值。
我不确定如何使用大量JOIN
在单个查询中编写此内容,或者如果我只做2个子查询然后减去它们。
到目前为止,我有类似的内容:
SELECT SUM(A.quantity) From TableA JOIN Table B WHERE ...
然后
SELECT SUM(A.quantity) From TableA JOIN Table C WHERE ...
考虑到TableA
和TableB
可能没有结果的可能性,但是TableA
和TableC
没有结果,或者反之,或者两者都有,或者两者都不会,我不能只是JOIN
TableA
和TableB
以及TableC
答案 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;
如果其中一个结果集返回NULL
,则coalesce()
会将该值视为0
。