我有2個表:在SQL SERVER 「NOT IN」 的替代
- 百貨商店表(保存百貨商店的數據):
- AccDocSales表(由系由令保存數據):
現在,我想選擇這些部門,它不會在每個MONTH的AccDocSales表中顯示(這意味着哪個部門每個MONTH的AccDocSales表中沒有DeptCode)。
EX(這種情況下):
我用這個查詢:此查詢
SELECT distinct MONTH(DocDate) as THANG, B20Dept.Code, B20Dept.Name
FROM B20Dept, B30AccDocSales S1
WHERE YEAR(S1.DocDate) = 2014 AND B20Dept.Code NOT IN
(
SELECT S2.DeptCode
FROM B30AccDocSales S2, B20Dept
WHERE YEAR(S2.DocDate) = 2014 AND S2.DeptCode = B20Dept.Code
AND MONTH(S1.DocDate) = MONTH(S2.DocDate)
)
ORDER BY MONTH(DocDate)
它的工作,但我的老師說: 「NOT IN」 是不是可以接受的。他問我找到另一種方法來做到這一點,沒有「IN」,「NOT IN」。
PS:我發現這個查詢還有一個問題。這是哪個月在「DeptCode」中的所有部門,哪個月沒有行,它們在運行該查詢時都不會顯示任何結果。
請幫忙。
簡單'JOIN'可以做。 –
嘗試使用「不存在」。 –
看到那裏:http://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join –