La réponse @Blorgbeard (en utilisant le top 1 et l'ordre par) est probablement la meilleure façon, mais juste pour être différent, vous pouvez également utiliser une sous-requête et n'existe pas :
SELECT name FROM names
WHERE (colA = @colA) OR (colA = 'ALL' AND NOT EXISTS(
SELECT name FROM names
WHERE colA = @colA))
Je suppose que "l'avantage" de ceci est qu'il utilise plus de sql standard.