使用多个 AND 创建 SQL 语句
Create SQL statement with mulitple AND
我在创建正确的 SQL 请求时遇到问题。
这是我的 table:
item warehouse amount
item1 A 1
item1 B 5
item2 A 9
item2 B 2
item3 A 1
item3 A 0
item4 B 1
我想显示所有项目:
- -在A库数量少于2
- -在仓库 B 中的数量大于 0
同时
我希望显示 item1。
到目前为止我的代码是:
SELECT item, warehouse , amount
FROM XXXX
WHERE
(warehouse = B AND amount>0)
AND
(warehouse = A AND amount<2)
我知道 warehouse = B AND warehouse = A 永远不会发生,但我不知道从这里去哪里。
我是 SQL 的新手,但我觉得我需要使用 GRUPBY
有什么帮助吗?
您可以使用聚合。使用 where
得到 任一个 条件。然后检查是否满足两者。假设每个仓库每个项目一行,你可以使用:
SELECT item
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
(warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;
请注意,这不是 return 金额。如果你也想要,那么使用条件聚合来旋转数据:
SELECT item,
SUM(CASE WHEN warehouse = 'B' THEN amount END) as b_amount,
SUM(CASE WHEN warehouse = 'A' THEN amount END) as a_amount
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
(warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;
我在创建正确的 SQL 请求时遇到问题。 这是我的 table:
item warehouse amount
item1 A 1
item1 B 5
item2 A 9
item2 B 2
item3 A 1
item3 A 0
item4 B 1
我想显示所有项目:
- -在A库数量少于2
- -在仓库 B 中的数量大于 0 同时
我希望显示 item1。
到目前为止我的代码是:
SELECT item, warehouse , amount
FROM XXXX
WHERE
(warehouse = B AND amount>0)
AND
(warehouse = A AND amount<2)
我知道 warehouse = B AND warehouse = A 永远不会发生,但我不知道从这里去哪里。
我是 SQL 的新手,但我觉得我需要使用 GRUPBY
有什么帮助吗?
您可以使用聚合。使用 where
得到 任一个 条件。然后检查是否满足两者。假设每个仓库每个项目一行,你可以使用:
SELECT item
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
(warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;
请注意,这不是 return 金额。如果你也想要,那么使用条件聚合来旋转数据:
SELECT item,
SUM(CASE WHEN warehouse = 'B' THEN amount END) as b_amount,
SUM(CASE WHEN warehouse = 'A' THEN amount END) as a_amount
FROM XXXX
WHERE (warehouse = 'B' AND amount > 0) OR
(warehouse = 'A' AND amount < 2)
GROUP BY item
HAVING COUNT(*) = 2;