* / Во-первых, получите по каждому имени в первый год, когда у них есть транзакция * / для ... в дополнение к общему количеству транзакций, совершенных этим лицом независимо от * / года. Например: ваши два совпадения "a "и" c "лиц
SELECT ;
YT.Name,;
MIN( YEAR( YT.DATE )) as FirstYear,;
COUNT(*) as TotalPerName;
FROM ;
YourTable YT;
GROUP BY ;
1;
INTO ;
CURSOR C_ByNameTotals
* / Теперь, когда у вас есть итоги на основе первого года на человека с их общими * / записями независимо от года, получите год и сумму итогов, которые ИМЕЮТ* / записи для данного года .... THEN UNION для всех исходных возможностей года * /, которых НЕ было в наборе результатов C_ByNameTotals.(отсюда твой 2007 и 2008)
SELECT;
FirstYear as FinalYear,;
SUM( TotalPerName ) as YrCount;
FROM ;
C_ByNameTotals;
GROUP BY ;
1;
INTO ;
CURSOR C_FinalResults;
UNION;
SELECT DISTINCT;
YEAR( Date ) as FinalYear,;
0 as YrCount;
FROM ;
YourTable ;
WHERE ;
YEAR( Date ) NOT IN ;
( select FirstYear FROM C_ByNameTotals )