2017-03-05 4 views
0

Ich möchte die Datensätze kennen, die nicht in table2 ist.Wie Daten abgerufen werden, die nicht in einer anderen Tabelle mit SQL Server?

Hier meine Frage,

select 
    jj.ItemID, 
    jj.ItemLookupCode 
FROM 
    [JC_ItemDailySalesParent] jj 
left join [F_ItemDailySalesParent] ff 
on jj.ItemID != ff.ItemID 
    and year(ff.time)='2017' 
    and month(ff.time)='3' 
    and day(ff.time)='1' 
    and ff.StoreID='1400' 
where year(jj.time)='2017' 
    and month(jj.time)='3' 
    and day(jj.time)='1' 
    and jj.StoreID='1400' 

Wenn ich zählen [JC_ItemDailySalesParent] ist
und die Zählung von [F_ItemDailySalesParent] ist .

select 
    storeid, 
    count(Storeid) 
from [JC_ItemDailySalesParent] 
where year(time)='2017' and month(time)='3' and day(time)='1' 
group by StoreID 

select 
    storeid, 
    count(Storeid) 
from [F_ItemDailySalesParent] 
where year(time)='2017' and month(time)='3' and day(time)='1' 
group by StoreID 

Ergebnis des Grafen

StoreID count 
1001  217 
1201  3140 
1302  5635 
1400  5422 
2001  5541 
2400  4565 

StoreID count 
1001  210 //want to know these missing 7 records from above table 
1201  3075 
1302  5607 
1400  5394 
2001  5469 
2400  4542 
+1

Sie sollten die Datumskriterien richtig verwenden, 'ff.time> = '20170301 und ff.time <' 20170302'' anstelle von Funktionen, die verhindern, dass Indizes verwendet werden. –

+0

@Jamesz Lassen Sie es. Ich möchte diese Aufzeichnung bekommen. Kannst du dafür helfen? –

Antwort

0

können Sie eine Unterabfrage hier verwenden, anstatt zwei Tabellen des Zugriffs:

SELECT 
    jj.ItemID, 
    jj.ItemLookupCode 
FROM 
    [JC_ItemDailySalesParent] jj 
WHERE 
    jj.ItemID NOT IN (
     SELECT ff.ItemID FROM [F_ItemDailySalesParent] ff 
     WHERE year(ff.time)='2017' 
      AND month(ff.time)='3' 
      AND day(ff.time)='1' 
      AND ff.StoreID='1400') 
    AND year(jj.time)='2017' 
    AND month(jj.time)='3' 
    AND day(jj.time)='1' 
    AND jj.StoreID='1400' 

Und Sie sollten wahrscheinlich verwenden, um die BETWEEN Funktion oder Operationen vergleichen anstelle von Datetime-Funktionen, wie @JamesZ sagte.

Verwandte Themen