El problema es equivalente a encontrar una coincidencia máxima en un gráfico bipartito . Cada elemento de columna representa un vértice, cada fila representa un borde. El artículo de Wikipedia vinculado proporciona algunos indicadores de algoritmos para resolver este problema. Hay una implementación del algoritmo húngaro en la biblioteca or-tools de Google .
Aquí está el ejemplo dado formulado como un gráfico, con los bordes rojos que representan la solución dada:
Me sorprendería si pudiera encontrar una solución puramente en SQL.