我正在使用Access 2013 VBA SQL来过滤Access表。需要选择仅有仓库20和21的物品。
Item Warehouse
Item1 25
Item1 21
Item1 22
Item1 22
Item2 20
Item2 21
Item2 21
Item2 21
Item2 21
Item3 20
Item3 22
Item3 23
Item3 25
Item3 25
Item3 25
Item4 20
Item4 20
Item4 20
Item4 21
Item4 21
Item5 20
Item5 20
Item5 20
Item5 20
Item5 20
结果是上例中的Item2和Item4。谢谢。
答案 0 :(得分:3)
如果你想要20和21 以及其他人:
select item
from t
where warehouse in (20, 21)
group by item
having min(warehouse) = 20 and max(warehouse) = 21;
如果你想要20和21 但没有其他人:
select item
from t
group by item
having min(warehouse) = 20 and max(warehouse) = 21;
如果你想要20或21 但没有其他人:
select item
from t
group by item
having sum(iif(warehouse = 20, 1, 0)) > 0 and
sum(iif(warehouse = 21, 1, 0)) > 0 and
sum(iif(warehouse in (20, 21), 0, 1) = 0;
答案 1 :(得分:0)
您可以使用Item作为连接对表进行简单的内连接,并按项目20过滤第一个表,按项目21过滤第二个表
使用DISTINCT将删除重复项
SELECT DISTINCT WH20Items.Item
FROM Table1 AS WH20Items INNER JOIN Table1 AS WH21Items ON WH20Items.Item = WH21Items.Item
WHERE (((WH20Items.Warehouse)=20) AND ((WH21Items.Warehouse)=21));