2017-08-05 106 views
-1

sample output我有3個表稱爲Item,Sales,ItemDynamic如何顯示一個表中不存在,但使用SQL Server存在於另一個表中的記錄?

項目

ID 
--- 
111 
112 

銷售

ItemID StoreID 
------------------ 
111  1201 
111  2001 
111  2400  
111  1400 
111  1201 
111  1201 
111  2400 
111  2001 

ItemDynamic

ItemID  StoreID 
------------------ 
111  1201 
111  1302 
111  1400 
111  2001 
111  2400 
111  1500 

當你分組Sales.StoreID與項ID,將只擁有4 STOREID(1201,1400,2001,2400)

現在我想只顯示剩餘STOREID這是ItemDynamic.StoreID像下面

期待輸出

ItemID StoreID 
----------------- 
111  1302 
111  1500 

我以不同的方式嘗試,但它帶來的所有ST oreid

條件

1.should不使用子查詢

試圖不工作

SELECT 
    IC.ItemID , IC.StoreID 
FROM 
    ItemDynamic IC 
LEFT JOIN 
    Sales S ON S.StoreID = Ic.StoreID 
WHERE 
    S.StoreID IS NULL and S.Time between '2017-07-16' and '2017-07-31' 
+0

你到目前爲止嘗試了什麼? – Sami

+0

@Sami通過使用子查詢我們可以輕鬆實現它。你真的想看到嗎?我在這裏給了一小塊桌子。 –

+0

'嘗試不工作'...什麼不工作?除了缺少連接條件之外,您的查詢看起來正確。 –

回答

0

如果你想從ItemDynamic誰也不能在所有StoreIDs Sales你在這裏:

SELECT distinct StoreID FROM ItemDynamic 
WHERE StoreID not in (SELECT StoreID FROM Sales) 

或無子查詢:

SELECT distinct ItemDynamic.StoreID FROM ItemDynamic 
LEFT JOIN Sales ON Sales.StoreID = ItemDynamic.StoreID 
WHERE Sales.StoreID IS NULL 
+0

對不起,看到我的情況,不應該使用子查詢 –

+0

看到更新的答案 – Vahid

+0

看到我的更新。它不返回任何行 –

0

使用JOIN:

SELECT t1.* 
FROM ItemDynamic t1 
LEFT JOIN Sales t2 
    ON t1.ItemID = t2.ItemID AND 
     t1.StoreID = t2.StoreID 
WHERE t2.ItemID IS NULL 
1

你可以做到這一點是:

Declare @Item Table (ID INT); 
Declare @Sales Table (ItemID INT , StoreID INT); 
Declare @ItemDynamic Table (ItemID INT , StoreID INT); 

Insert into @Item values 
(111), 
(112); 

Insert into @Sales values 
(111,1201), 
(111,2001), 
(111,2400), 
(111,1400), 
(111,1201), 
(111,1201), 
(111,2400), 
(111,2001); 

Insert into @ItemDynamic values 
(111,1201), 
(111,1302), 
(111,1400), 
(111,2001), 
(111,2400), 
(111,1500); 

SELECT IC.ItemID , IC.StoreID FROM @ItemDynamic IC 
LEFT JOIN @Sales S ON S.StoreID = Ic.StoreID 
WHERE S.StoreID IS NULL; 

這裏是一個Demo

更新: 如果S.StoreID IS NULL表示該行沒有日期,則Time列中有NULL

+0

我想你還需要加入'ItemID'。此外,這與問題中給出的查詢沒有區別。 –

+0

@TimBiegeleisen寫作演示 – Sami

+0

@Sami我看了你的演示。它正確顯示。但是,當我嘗試使用相同的代碼,另外我添加了過濾器的時間。但它沒有帶來任何結果 –

相關問題