@Blorgbeard svar (att använda topp 1 och sortera efter) är förmodligen det bästa sättet, men bara för att vara annorlunda kan du också använda en underfråga som inte existerar:
SELECT name FROM names
WHERE (colA = @colA) OR (colA = 'ALL' AND NOT EXISTS(
SELECT name FROM names
WHERE colA = @colA))
Jag antar att "fördelen" med detta är att den använder mer standard sql.