Not too sure myself on the joining...
I would have assumed the left outer join would have worked (assuming your PRODUCT table is the Primary table)
one short term bypass method would be:
GROUP by {products.stockcode}
Then instead of putting your date range into the select expert, put it into the formula.
for example, if you report looked like this:
GH1 - {products.Stockcode} (sum of {saleshistory.quantity})
instead of select expert: (saleshistory.month) is equal to "January"
write a QUANTITY formula
{@quantity} that reads:
IF {saleshistory.month}="January" THEN {saleshistory.quantity}
and sum using this formula rather than the database field, {saleshistory.quantity}
This will give you a full list of your products regardless of whether you have sold any or not.
You could then put this
{@quantity} formula into the select expert as:
is equal to 0
showing only products that you have not sold in the month of January.