带一行不在2个表中的一个表中

时间:2017-07-26 16:19:10

标签: sql sql-server

我在sql中有这个查询

SELECT 
    SI_Articulo = COALESCE(t.SI_Articulo, c.SI_Num_Articulo),
    SI_Ubicacion = COALESCE(t.SI_Ubicacion, c.SI_Ubicacion),
    SI_OV = COALESCE(c.SI_OV,''),
    SI_Ubicacion_Fisica = COALESCE(c.SI_Ubicacion_Fisica,''),
    SI_Existencia = COALESCE(t.SI_Existencia, 0),
    SI_Cantidad = COALESCE(c.SI_Cantidad, 0), 
    SI_Cantidad2 = (SELECT COALESCE(c2.SI_Cantidad,0) 
        FROM SI_Conteo c2 
        WHERE  c2.SI_Num_Conteo = 2 /*AND c2.SI_Num_Articulo = 200002*/
            AND t.SI_Ubicacion = c2.SI_Ubicacion),
    SI_Dif =  COALESCE(c.SI_Cantidad, 0) - COALESCE(t.SI_Existencia, 0),
    SI_Dif_Dinero = (COALESCE(c.SI_Cantidad,0) - COALESCE(t.SI_Existencia,0)) * COALESCE(m.SI_Costo_Promedio,0)  
FROM SI_Inventario_Teorico_QAD t 
LEFT JOIN SI_Conteo c
    ON (t.SI_Articulo = c.SI_Num_Articulo 
        AND c.SI_Num_Conteo = 1
        AND t.SI_Ubicacion = c.SI_Ubicacion)
INNER JOIN SI_Maestro_Ref_QAD m 
    ON (t.SI_Articulo = m.SI_Num_Articulo 
        OR c.SI_Num_Articulo = m.SI_Num_Articulo) 
WHERE c.SI_Num_Articulo = 200002 
    OR t.SI_Articulo = 200002

这给我带来了下一个结果

img1

我的问题是在SI_Conteo表中添加了相同的引用,但它在SI_SI_Inventario_Teorico_QAD表中不存在,所以它不会显示给我。

这是不带我的那个

img2

1 个答案:

答案 0 :(得分:0)

根据您的问题,表“SI_C​​onteo”中的引用而不是表“SI_Inventario_Teorico_QAD”中的引用, 您可能需要使用右连接,如:

 SI_Conteo right join SI_Inventario_Teorico_QAD 

或使用左:

SI_Inventario_Teorico_QAD left join SI_Conteo