左外连接与右表过滤器

时间:2015-11-16 23:33:19

标签: sql-server filter left-join

我有两张桌子:

优惠

ShippedItem Returned
----------- --------
A           NULL
B           NULL
C           NULL
D           Yes
E           Yes

返回

ReturnItem Reason
---------- --------------------
D          Not Good
E          Defect

我需要根据返回原因编写一个查询,该查询将提供Shipping qty并返回Qty(返回qty ie..where返回值不为null)。

SQL Fiddle

1 个答案:

答案 0 :(得分:0)

我还不能发表评论,但这里有一些关于你问题的说明。

由于您的表格没有这些字段,因此您无法退回运费数量或返回数量。这可能只是你的疏忽,那些表确实有这些领域。

你说你想要一个正确的表过滤器,但你没有提到过滤器是什么。

你提到左外连接,所以大概你知道如何写一个。

如果我不得不猜测你的问题是什么,我会说你要在Return表上过滤一些东西,但仍然从Shipping表中获取不在Return表中的所有行。

如果是这样,你所做的就是将右表过滤器从WHERE子句移动到JOIN子句中。

    SELECT *
    FROM Shipping
    LEFT JOIN Returns
    ON ShippedItem = ReturnItem
    AND Returns.otherField = Filter here