che sarebbero r,b,d?
come gestisci il fatto che per ogni riga non puoi metteri a scrivere 3 importi a meno che non abbiano le stesse date?
Potresti a ogni iterazione, con un contatore vedere se andare a capo(</tr><tr>) piuttosto che aggiungere un'altra td alla tabella.
Potresti incrementare un contatore modulo 3 e considerare i 2 casi particolari:
-contatore = 0 allora inizi una nuova riga in cui metti una <tr><td>data</td><td>importo</td>
- contatore = 2 aggiungi <td>importo</td></tr>
-altrimenti aggiungi <td>importo</td>
In questo modo però resta il problema della terza domanda.