订单明细查询

时间:2018-12-17 20:38:36

标签: sql-server

我试图找到一个解决方案,但是没有成功。我有订单标题和订单明细表。我正在尝试退回所有具有特定部分的订单,而不是其他。

例如,退货单仅包含A部分,并明确排除B和C。

我们非常感谢您的帮助。

样本数据:

data table

在此示例中,我想返回订单(OrderNumber和OrderLine),其中A部分是订单中的唯一部分(10003)。

3 个答案:

答案 0 :(得分:0)

像这样吗?

select * from order where orderid in
(
   select orderid from order
   inner join orderdetail on order.orderid = orderdetail.orderid
   where orderdetail.partname in ('A', 'B')
)
and orderid not in 
(
   select orderid from order
   inner join orderdetail on order.orderid = orderdetail.orderid
   where orderdetail.partname in ('C')
)

答案 1 :(得分:0)

尝试一下。

SELECT *
FROM Tbl t
WHERE NOT EXISTS (
    SELECT 1
    FROM Tbl
    WHERE t.OrderNumber = OrderNumber AND Part <> 'A'
)

答案 2 :(得分:0)

您可以尝试以下查询:

SELECT t.ordernumber, t.orderline
FROM test AS t
WHERE t.ordernumber NOT IN (SELECT ordernumber
                            FROM test 
                            WHERE part IN ('B','C'));

输出:

ordernumber | orderline
10003       | 1