2016-11-18 75 views
0

我正在使用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 

結果是項目2和項目4在上面的例子。謝謝。

+0

你真的不能拿出這個簡單的查詢使用'WHERE'子句? – Parfait

回答

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; 
0

你可以做一個簡單的內連接在桌子上本身使用項目的加入,並通過項目21

使用DISTINCT將刪除重複的項目20和第2臺過濾第一臺

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));