La respuesta de @Blorgbeard (usar top 1 y ordenar por) es probablemente la mejor manera, pero solo para ser diferente, también podría usar una subconsulta y no existe:
SELECT name FROM names
WHERE (colA = @colA) OR (colA = 'ALL' AND NOT EXISTS(
SELECT name FROM names
WHERE colA = @colA))
Supongo que la "ventaja" de esto es que usa más sql estándar.