Il n'y a aucune différence dans la fonctionnalité sous-jacente des deux types d'alias (par asopposition à =). Cela se résume exactement à ce que vous avez mentionné: lisibilité et maintenabilité.
À mon avis, l'ancien ( <Expression> as <Alias>) est beaucoup plus lisible car il est explicite. Quand vous l'avez, SELECT ColumnName = 1je pense qu'il serait assez facile de confondre cela avec le réglage d'une variable lors de ces longues nuits fatiguées. Vous pourriez confondre cela avec SELECT @ColumnName = 1et ce serait une fonctionnalité complètement différente. Par conséquent, pour contourner toute possibilité de requête "double look", ou pire encore ... erreur de compréhension / codage, je pars avec SELECT 1 as ColumnName100% du temps.
Préférence personnelle, mais la cohérence (pour vous et au sein de votre équipe) est primordiale . Tout ce que vous trouvez le plus facile, allez-y et faites-le tout le temps. Il n'y a rien de plus frustrant que de faire des allers-retours pour le dépannage / la révision / la maintenance du code.
La troisième façon non mentionnée est d'utiliser <Expression> <Alias>. En d'autres termes, votre deuxième moyen sans le asmot clé. Je pense que c'est aussi mauvais que le =symbole. Il manque de lisibilité au profit de quoi? Ne pas taper trois caractères supplémentaires ( aset un espace). Pas la peine.
À des fins d'exagération, jetez un œil à une requête comme celle-ci:
use AdventureWorks2012;
go
select
[New Name] = Name,
NewDepId = DepartmentID,
GroupName as GName,
ModifiedDate MyModDate
from HumanResources.Department;
Pas du code que je voudrais revoir.