SQL 检查 2 列

SQL check against 2 columns

我有一个包含 1,362 种不同物品的数据库,这些物品可以存储在 112 个不同仓库中的任何一个中。

我想写一些东西 return 所有不同仓库中库存值为 0 的每件商品的名称。

我已经有了:

SELECT OITW.[ItemCode] AS [Item Code], INV1.[Dscription] AS [Description],
       OITW.[WhsCode] AS [Warehouse], SUM(OITW.[OnHand]) AS [On Hand]
FROM OITW
  INNER JOIN INV1 ON INV1.[ItemCode] = OITW.[ItemCode] 
WHERE INV1.[Dscription] LIKE 'BA SQUID ASSASSIN -Case%'
GROUP BY OITW.[ItemCode], INV1.[Dscription], OITW.[WhsCode]
ORDER BY [Warehouse], [On Hand]

哪个 returns:

例如,此商品不适用,因为它在 2 个仓库中有库存。

我希望这个问题是有道理的。如果没有,请告诉我,我会尽力澄清。

假设股票价值从不为负,你可以这样做:

SELECT INV1.[ItemCode] AS [Item Code], INV1.[Description] AS [Description],
FROM OITW INNER JOIN
     INV1
     ON INV1.[ItemCode] = OITW.[ItemCode] 
WHERE INV1.[Description] LIKE 'BA SQUID ASSASSIN -Case%'
GROUP BY OITW.[ItemCode], INV1.[Description], 
HAVING MAX([ON HAND]) = 0;

根据您的查询所做的更改:

  • GROUP BY只包括项目和描述,不包括仓库和现有量。
  • 修改SELECT以匹配GROUP BY
  • HAVING 子句强制执行您的条件。
  • 我建议您不要在 table 名称中包含空格。使用简单名称,因此无需转义列名。