如何列出缺少特征的字段并删除不属于特征的字段

时间:2013-08-01 04:55:33

标签: sql sql-server

首先,我正在使用SQL Server Management Studio。

我尝试过搜索,但找到正确的措辞可能是我失败了。

我正在尝试为我的SQL类开发一个查询,该查询返回尚未销售4种类型产品ResellerName中的1种的商家列表ProductCategoryKey

仅列出不包含胡萝卜的食谱。

要求我加入五个表格才能将ResellerNameProductCategory相关联。

当前代码如下所示:

SELECT DISTINCT 
    r.ResellerName  
FROM 
    (((DimReseller AS r
       FULL OUTER JOIN FactResellerSales AS rs ON r.ResellerKey = rs.ResellerKey)
     INNER JOIN DimProduct AS p ON rs.ProductKey = p.ProductKey)
    INNER JOIN DimProductSubcategory AS psc ON  p.ProductSubcategoryKey = psc.ProductSubcategoryKey)
INNER JOIN DimProductCategory AS pc ON psc.ProductCategoryKey = pc.ProductCategoryKey
ORDER BY r.ResellerName`

我很遗憾我的Where条款应该包括哪些内容,只列出每个没有卖过自行车的公司。我唯一的想法是尝试将类别1字段设置为NULL字段或其他内容。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

重写它的最简单方法是使用LEFT JOIN查找ProductCategoryKey上的任何匹配项,使用IS NULL删除包含匹配项的行,例如;

SELECT DISTINCT r.ResellerName
FROM DimReseller AS r
LEFT JOIN FactResellerSales AS rs
  ON r.ResellerKey = rs.ResellerKey)
LEFT JOIN DimProduct AS p
  ON rs.ProductKey = p.ProductKey)
LEFT JOIN DimProductSubcategory AS psc
  ON  p.ProductSubcategoryKey = psc.ProductSubcategoryKey)
LEFT JOIN DimProductCategory AS pc
  ON  psc.ProductCategoryKey = pc.ProductCategoryKey
 AND pc.ProductCategoryKey IN (1,2,3,4,5,6,7,8)
WHERE pc.ProductCategoryKey IS NULL
ORDER BY r.ResellerName