SQL. Classificação por um campo
-
25-09-2019 - |
Pergunta
Eu criei uma visão simples, composta por 3 tabelas no SQL.
Ao clicar com o botão direito do mouse e selecionando design, na tabela de objeto Explorer, modifiquei minha visualização personalizada. Acabei de adicionar Sortby ASC em um campo.
O problema é que as alterações não são refletidas na saída da visão. Depois de salvar a visualização e selecionar o Open View, a classificação não é exibida na saída.
Então, o que está acontecendo aqui?
Solução
Tecnicamente, é possível assar classificação em um VIEW
Mas é altamente desencorajado. Em vez disso, você deve aplicar a classificação enquanto seleciona da visualização como assim:
Select ...
From MyView
Order By SortByCol ASC
Se você realmente queria saber (mas, novamente, eu recomendo fortemente contra isso), você pode usar o comando principal para contornar a limitação de classificar na vista:
Select TOP 100 PERCENT * Col1, Col2....
From Table1
Order By SortByCol ASC
Outras dicas
Parece :
Há uma restrição nas cláusulas selecionadas em uma definição de visualização no SQL Server 2000, SQL 2005 e SQL 2008. Uma instrução CREATE não pode incluir a cláusula de ordem por ordem, a menos que haja também uma cláusula superior na lista de seleção da instrução SELECT. A cláusula Ordem By é usada apenas para determinar as linhas que são retornadas pela cláusula superior na definição de exibição. A cláusula Ordem By não garante resultados ordenados quando a visualização é consultada, a menos que a ordem por também seja especificada na própria consulta.
Há também um hotfix que precisa ser aplicado. Depois disso, você deve usar 100% superior para garantir que o pedido por obras.
Hth
Geralmente, As visões não podem ser classificadas.
(Como outros mencionaram, há um hack para fazê -lo, mas como você está usando um designer de consulta visual em vez de escrever sua definição de visualização no SQL, provavelmente é difícil implementar esse hack.)
Na verdade, você não "modificou" sua visão, você apenas mudou a instrução SELECT que EM estava usando para selecionar a partir de sua visão. As configurações de classificação não são retidas na definição de visualização.
Quando você fecha a guia, o EM não se lembra da sua preferência de classificação por essa visualização; portanto, quando você abre a visualização novamente, ele será lançado em qualquer ordem que o SQL Server decidir.