Cela devrait fonctionner sur à peu près tous les dialectes SQL :
SELECT last_name, first_name FROM names
WHERE last_name IN (
SELECT last_name FROM names GROUP BY last_name HAVING COUNT(*) > 1
)
Cela vous donnera cependant un ensemble de résultats comme celui-ci :
Smith Jack
Smith Joe
Smith Anna
Sixpack Joe
Sixpack Eve
La solution la plus élégante pour afficher cela dans le format souhaité IMO consiste simplement à réorganiser le jeu de résultats par programmation dans l'application cliente au lieu de tirer toutes sortes de cascades SQL obscures; quelque chose comme (pseudocode):
for each row in resultset
if row[last_name] <> previous_last_name
print newline, print last_name
print ' '
print first_name