Solicitar por ASC ou DESC com base no parâmetro?

fdkgfosfskjdlsjdlkfsf

Na consulta a seguir, uso um @IsDescOrderpara definir a ordem.

Tento especificar o order by(ou seja, ASCou DESC), mas recebo um erro. Posso remover o, DESC | ASCmas ambas as opções retornarão o mesmo conjunto porque retornará a ordem padrão:

declare @IsDescOrder bit = 0

;with cte as 
(
 select 
 *
 from (
  select *, r = row_number() over (partition by NameId 
  order by 
      case @IsDescOrder 
        when 1 then size_mbps DESC,
        when 0 then size_mbps ASC
      end
  ) 
  from #temp_table 
  ) a 
 where r <= 20
)
select 
* from 
cte 

Recebo erro Incorrect syntax near the keyword 'DESC'..

Existe uma solução alternativa?

Martin

Você tem a ideia certa, mas só precisa mudar CASEum pouco a maneira como está trabalhando:

ORDER BY
  CASE WHEN @IsDescOrder = 1 THEN DateKey ELSE '' END DESC,
  CASE WHEN @IsDescOrder = 0 THEN DateKey ELSE '' END ASC

Ele contém duas cláusulas para ordenar, uma cláusula de ordem decrescente seguida por outra crescente.

Quando @IsDescOrderé 1, então a cláusula descendente é usada, caso contrário, a cláusula ascendente. Ao fornecer ELSE '', isso garante que o pedido indesejado (ou ASCou DESC) seja efetivamente ignorado.

EDITAR

Conforme apontado pelo OP, isso causava um erro se a coluna do pedido fosse numérica. Para resolver isso, substitua a string vazia ( '') por 0:

ORDER BY
  CASE WHEN @IsDescOrder = 1 THEN DateKey ELSE 0 END DESC,
  CASE WHEN @IsDescOrder = 0 THEN DateKey ELSE 0 END ASC

Isso funciona da mesma forma que a solução com a string vazia, mas evita o erro de conversão de tipo ao usar colunas numéricas.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

SQL Server, classificar em duas colunas, primeira classificação asc, segundo asc ou desc com base no primeiro ímpar-par

Adicionar vírgula após a consulta MySQL com base na condição (desc ou asc)

Como solicitar dados com base em um parâmetro no firestore?

c # classifica a lista por entre dois valores asc ou desc

Room DAO Ordem por ASC ou variável DESC

Como ordenar por desc ou asc em react-native?

Classifique a coleção do Laravel por ordem personalizada, diferente de asc ou desc

Eloquent sortBy - especifique asc ou desc

Delegar com parâmetro de classe base e / ou herdado

Classificando a tabela de dados por duas colunas com uma coluna asc e a outra desc c #

ggpubr: classificar por grupo, mas com ordem de classificação diferente (asc, desc)

Ordenar por (asc | desc) em linq para SQL Server lida com DateTime de maneira diferente

Classificando div asc desc por conteúdo

Classificando por data de Asc e Desc

como encomendar por <= 7 desc e depois por> 7 asc?

Instrução CASE para ordem por cláusula com várias colunas e classificação desc / asc

Paginação em Ordem Desc ou Asc em CI 4

Algolia classificando apenas ASC ou DESC, não ambos

Grupo de sintaxe do Mysql SQL por [asc | desc]?

PHP - Classificar matriz por valor em subarray - DESC e ASC

Ordem MySQL por uma coluna ASC / DESC relacionada a outra coluna

pedido de firebase por datetime desc e asc

Como fazer uma porta que gere | 0> ou | 1> com base em um parâmetro?

Método genérico com restrições de tipo ou parâmetro de classe base

Mostrar ou ocultar a coluna SSRS com base no valor de parâmetro específico

Como implementar tarefas no PowerShell com base em um parâmetro de script (ou seja, msbuild, gradle)

Como ler o parâmetro desc html com javascript?

Por que o parâmetro do evento muda com base em como o código é escrito

Por que o parâmetro do evento muda com base em como o código é escrito

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo