跨3个表查询结果

时间:2017-10-13 20:04:47

标签: sql sql-server

我需要查看客户是否为特定项目付费。表格如下:客户,订单,详细信息。他们连接的方式是客户到订单和订单到详细信息。 (client.acctno = order.acctno,order.orderno = details.orderno)

如何搜索所有订单并仅显示尚未售出特定商品的订单(下面带有确切表名的示例代码)。我的数据一直显示所有客户,因为他们没有按特定订单销售这些商品我希望将它们全部组合在一起作为所有订单并进行比较。

{{1}}

1 个答案:

答案 0 :(得分:0)

问题是您的查询是在订单级别。您可能会发现通过以下方式让客户更容易:

SELECT o.ACCT_NO
FROM PL00.dbo.ordhdr o JOIN
     pl00.dbo.orddet od
     ON od.ORDER_NO = o.order_no 
GROUP BY o.ACCT_NO
HAVING SUM(CASE WHEN od.ITEM_NO = '2017WI' THEN 1 ELSE 0 END) = 0;
ORDER BY o.ACCT_NO;