我有三张桌子。一个是工作人员,一个是计划中的材料,另一个是已发布的材料。
WONUM
WONUM,ITEM,QUANTITY
WONUM,ITEM,QUANTITY
我已设法选择所有有物料计划的工作人员但没有通过简单退出查询发出的材料(我们无法连接表格)。
and exists (select * from T2 where T2.WONUM = T1.WONUM)
and not exists (select * from T3 where T3.WONUM = T1.WONUM)
我还可以选择具有大部分相同基本查询的材料的工作人员。
and exists (select * from T2 where T2.WONUM = T1.WONUM)
and exists (select * from T3 where T3.WONUM = T1.WONUM)
但我现在想要的是select all workorders from T1 where the sum of T3.QUANTITY + T2.QUANTITY is 0
。 (T3.QUANTITY
包含例如-3
,如果已发布3
个单位
我不允许使用JOIN
来创建视图,所以我必须做一些嵌套查询。
我还尝试将DUAL
表用于sum
,但它只能处理1行。
答案 0 :(得分:2)
您可以这样做:
and ((select SUM(t2.quantity) from T2 where T2.WONUM = T1.WONUM) +
(select SUM(t3.quantity) from T3 where T3.WONUM = T1.WONUM)
) = 0
实际上,由于可能无法匹配,您需要处理NULL
值:
and (coalesce((select SUM(t2.quantity) from T2 where T2.WONUM = T1.WONUM), 0) +
coalesce((select SUM(t3.quantity) from T3 where T3.WONUM = T1.WONUM), 0)
) = 0
答案 1 :(得分:0)
请尝试:
SELECT CASE WHEN NVL
(((SELECT SUM (NVL (T2.QUANTITY), 0)
FROM T2
WHERE T2.WONUM = T1.WONUM) +
(SELECT SUM (NVL (T3.QUANTITY), 0)
FROM T3
WHERE T3.WONUM = T1.WONUM), 0) = 0)
THEN T1.WONUM
ELSE NULL AS FOO
FROM T1;
对不起,我没试过。我正在快速移动的码头上用小型安卓手机打字。