Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Server 2008 :erreur étrange dans la procédure stockée

Vous ne pouvez pas utiliser une variable dans le order by clause. Au lieu de cela, vous devez faire quelque chose comme :

order by (case when @groupBy = 'VRNOA' then VRNOA
               . . .
          end)

Soyez prudent, cependant, car si les colonnes sont de types différents, des événements inattendus peuvent se produire ou entraîner une autre erreur. (Il existe une alternative à l'utilisation de SQL dynamique, mais je ne le recommanderais pas.)

Aussi, le nom @groupby est un peu trompeur. « Regroupement » est un terme SQL équivalent à « agrégation ». Ne serait pas @OrderBy ou @SortBy serait plus approprié ?