You can define a calculated member (either here or in the cube) that
gets the value you want as an MDX expression. Try this one (not sure
if this is most elegant solution):
Save your pivot table and then click the calculator icon. For type,
click measure. Then use this for the expression:
([Measures].[Amount Sold],[dateofsale].[actual].
[yearsold].currentmember.lag(1))-([Measures].[Amount Sold],
[dateofsale].[actual].[yearsold].currentmember)
I used this in a query of a slightly different form than you asked.
Try this:
WITH MEMBER [MEASURES].[SalesDelta] AS '([Measures].[Amount Sold],
[dateofsale].[actual].[yearsold].currentmember.lag(1))-([Measures].
[Amount Sold],[dateofsale].[actual].[yearsold].currentmember)' SELECT
{[Measures].[Amount Sold],[MEASURES].[SALESDELTA]} ON 0,NON EMPTY
NONEMPTYCROSSJOIN([Product].%TopMembers,[DateOfSale].[Actual].
[YearSold].Members) ON 1 FROM [HoleFoods]
The interesting pieces here are the currentmember function and the lag
function.
With this formulation, I couldn't create exactly the query you had
because it seems that we don't support CROSSJOIN with a "calculated
measure." -- Or that's what it looked like to me. Don't take this
diagnosis as a final answer on that!