SELECT 'id_towaru'=tt.tw_id
,'nazwa'=tt.tw_Nazwa
,'symbol'=tt.tw_Symbol
,'grupa'=sg.grt_Nazwa
FROM tw__Towar tt
LEFT JOIN sl_GrupaTw sg on tt.tw_IdGrupa=sg.grt_Id
WHERE NOT EXISTS (
SELECT 1
FROM dok_Pozycja dp
WHERE dp.ob_TowId = tt.tw_Id
)
Zapytanie w tej postaci nie przeszukuje dokumentów inwentaryzacyjnych, poza tym raczej niczego nie zapomniałem.
Poniżej wariant dodatkowo wykluczający towary, które wpadły na dokumenty inwentaryzacyjne:
SELECT 'id_towaru' = tt.tw_id
,'nazwa' = tt.tw_Nazwa
,'symbol' = tt.tw_Symbol
,'grupa' = sg.grt_Nazwa
FROM tw__Towar tt
LEFT JOIN sl_GrupaTw sg ON tt.tw_IdGrupa = sg.grt_Id
WHERE NOT EXISTS (
SELECT 1
FROM dok_Pozycja dp
WHERE dp.ob_TowId = tt.tw_Id
)
EXCEPT
SELECT 'id_towaru' = tt.tw_id
,'nazwa' = tt.tw_Nazwa
,'symbol' = tt.tw_Symbol
,'grupa' = sg.grt_Nazwa
FROM iw_Pozycja iwp
JOIN tw__Towar tt ON iwp.iwp_IdTowaru = tt.tw_id
LEFT JOIN sl_GrupaTw sg ON tt.tw_IdGrupa = sg.grt_Id