Вам необходимо заключить параметры даты в одинарные кавычки.
Inventory.EffectiveDate >= '2011-12-30'
Вам также следует рассмотреть возможность использования более коротких псевдонимов, чтобы сделать код более кратким. Я не уверен в цели использования псевдонима типа Products
для представления dbo.Products
... вы также должны устранить все ненужные скобки, если Access не навязывает их вам.
SET NOCOUNT ON;
SELECT
inv.EffectiveDate,
inv.Quantity,
inv.SourceType,
inv.PickingLocation,
inv.SourceInventory,
loc.LocationId,
cust.CustomerName,
prod.ProductId,
lFrom.LocationId as lFrom,
lTo.LocationId as lTo
FROM dbo.Inventory AS inv
LEFT OUTER JOIN dbo.Products AS prod ON prod.Product = inv.Product
LEFT OUTER JOIN dbo.Locations AS loc ON loc.Location = inv.Location
LEFT OUTER JOIN dbo.Customers AS cust ON inv.Location = cust.ConsignmentLocation
LEFT OUTER JOIN dbo.Inventory AS src ON src.Inventory = inv.SourceInventory
LEFT OUTER JOIN dbo.Locations AS lFrom ON lFrom.Location = src.Location
LEFT OUTER JOIN dbo.Inventory AS trg ON trg.Inventory = inv.TargetInventory
LEFT OUTER JOIN dbo.Locations AS lTo ON lTo.Location = trg.Location
WHERE
inv.SourceType IN ('Q', 'G', 'P', 'A', 'B')
AND inv.EffectiveDate >= '2011-12-30'
AND inv.EffectiveDate <= '2011-12-31'; -- suspect you want < '2012-01-01' here
-- unless your column doesn't store time.