Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sql Server 2008:Erro estranho no procedimento armazenado


Você não pode usar uma variável na ordem order by cláusula. Em vez disso, você deve fazer algo como:
order by (case when @groupBy = 'VRNOA' then VRNOA
               . . .
          end)

Tenha cuidado, porém, porque se as colunas forem de tipos diferentes, coisas inesperadas podem acontecer ou podem ocorrer outro erro. (Existe uma alternativa para usar SQL dinâmico, mas eu não recomendaria isso.)

Além disso, o nome @groupby é um pouco enganador. "Agrupamento" é um termo SQL equivalente a "agregação". Não @OrderBy ou @SortBy ser mais apropriado?