O problema é equivalente a encontrar uma correspondência máxima em um gráfico bipartido . Cada elemento de coluna representa um vértice, cada linha representa uma aresta. O artigo vinculado da Wikipedia fornece algumas dicas para algoritmos para resolver esse problema. Há uma implementação do algoritmo húngaro na biblioteca or-tools do Google .
Aqui está o exemplo dado formulado como um gráfico, com as bordas vermelhas representando a solução dada:
Seria surpreendente para mim se você pudesse encontrar uma solução puramente em SQL.