1

我建立了一个查询,列出了公司今年销售的前 100 个 SKU。我们销售超过 650 件商品,该商品的尺寸有多种变化,总 SKU 范围约为 15,000 个包含前 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;

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

4

1 回答 1

0

你想要的是一个反加入。有多种方法可以做到这一点,这NOT IN是其中一种方法。NOT IN不一定非常有效,但是您会知道在哪里可以改进。

  • 删除LEFT JOINto qry_NotTop100
  • 删除WHERE关于qry_NotTop100
  • 添加到WHERE子句AND tbl_SalesOrderDetail.ITEM_CODE NOT IN ( SELECT qry_NotTop100.Code FROM qry_NotTop100 )
于 2013-05-13T22:13:18.310 回答