forse la sintassi SQL già potrebbe aiutarti... forse.
Altrimenti la prima cosa che mi viene in mente è quella di fare un array per ogni campo e ogni stampa su testo controlli che non stia già negli elementi precedenti dell'array.