Eliminar linhas de produto cartesiano

Olá,

Quando se tem uma tabela com um cod (pessoa, por exemplo) e a tabela compras com o cod do comprador, data de compra e tipo de pagamento…

Se eu desejar criar um relatório para saber se a pessoa pagou a dinheiro mostrar “dinheiro” ou cartão “cartão” por meio de um case, porém se houver um terceiro tipo de pagamento “cheque” o cod do cliente será mostrado com o tipo de pagamento em branco.
O problema é, se eu desejar retornar uma linha por cliente, falando se ele pagou por cartão ou não. Como eu faço isso já que as linhas são diferentes e o dintinct não funciona para esse caso já que é um produto cartesiano?

grato pela atenção.