MS Access查询 - 显示独占记录

时间:2013-05-13 21:31:10

标签: sql ms-access

我已经构建了一个查询,列出了今年在该公司销售的前100个SKU。我们销售超过650件商品,这个商品的尺寸有多种变化,总计约15,000个SKU我试图写一个查询,显示完全由前100个SKU订单,但我能得到的订单是在前100名中包含一个SKU。

以下是我的SQL语句

SELECT 
  Year([DATE_FLD]) AS Expr1, 
  tbl_SalesOrderDetail.ITEM_CODE, 
  tbl_SalesOrderDetail.CUST_CODE, 
  tbl_SalesOrderDetail.DOC_NO
FROM (tbl_SalesOrderDetail 
LEFT JOIN qry_NotTop100 
  ON tbl_SalesOrderDetail.ITEM_CODE = qry_NotTop100.Code) 
INNER JOIN qry_Top100 
  ON tbl_SalesOrderDetail.ITEM_CODE = qry_Top100.Code
WHERE (((Year([DATE_FLD]))=Year(Date())) AND ((qry_NotTop100.Code) Is Null))
ORDER BY tbl_SalesOrderDetail.DOC_NO;

关于我可能做错的任何想法?

1 个答案:

答案 0 :(得分:0)

你想要的是一个反连接。有多种方法可以做到这一点,NOT IN就是其中一种方式。 NOT IN并不一定非常有效,但您可以了解如何改进事物。

  • LEFT JOIN移至qry_NotTop100
  • 删除WHERE
  • 上的qry_NotTop100条款
  • 添加到WHERE条款AND tbl_SalesOrderDetail.ITEM_CODE NOT IN ( SELECT qry_NotTop100.Code FROM qry_NotTop100 )