Is your sample of detail level data or is it a group summary? If it is detail level, then you need to tell us what determines the order WITHIN the date group.
If detail level, you could use a formula like the following in the detail section (although the results would change if you add a sort field):
whileprintingrecords;
numbervar max;
numbervar min;
if onfirstrecord or
{table.date} <> previous({table.date}) then
min := {table.amount};
if onlastrecord or
{table.date} <> next({table.date}) then
max := {table.amt};
In the group header use a reset formula:
whileprintingrecords;
numbervar max;
numbervar min;
if not inrepeatedgroupheader then (
max := 0;
min := 0
);
Then in the group footer for date use:
whileprintingrecords;
numbervar max;
numbervar min;
max-min
-LB