none
O que tem de errado neste ORDER BY com CASE? RRS feed

  • Pergunta

  • ORDER BY 
    CASE CL.ORIGEM WHEN 'SUP' 
    THEN
    G.NOME, CC.DESCRICAO 
    ELSE 
    G.NOME, UG.NOME
    END

    Não funciona, erro: 

    "Incorrect syntax near ','."

    O que fiz de errado??

    sexta-feira, 23 de novembro de 2012 15:58

Respostas

  • Marcelo,

    Acho que não é possível colocar uma lista de colunas da forma como você tentou.

    Reparei inclusive que a quantidade de colunas para cada opção é diferente.

    A princípio, pelo que foi exposto, acho que existem 2 alternativas:

    - utilizar um case para cada coluna

    - concatenar os valores das colunas para formar um único valor

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta MarceloSchneider segunda-feira, 26 de novembro de 2012 18:01
    sexta-feira, 23 de novembro de 2012 17:31

Todas as Respostas

  • Boa tarde,

    Experimente desta forma:

    ORDER BY 
        G.NOME,
        CASE CL.ORIGEM WHEN 'SUP' 
            THEN CC.DESCRICAO 
            ELSE UG.NOME
        END
    

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta MarceloSchneider sexta-feira, 23 de novembro de 2012 16:45
    • Não Marcado como Resposta MarceloSchneider sexta-feira, 23 de novembro de 2012 16:45
    sexta-feira, 23 de novembro de 2012 16:28
  • Não vai dar para usar, eu resumi a consulta ali, são vários campos de order by para cada condição... eu apenas coloquei 2 ali, mas são 6-7, veja a condição completa:

    ORDER BY 
    CASE CL.ORIGEM WHEN 'SUP' 
    THEN
     G.NOME, CC.DESCRICAO, CA.NUMERO_CARTAO, DATA, CL.SITUACAO, CL.TIPO
    ELSE 
     G.NOME, UNIDADE_GESTORA, CENTRO_CUSTO, NUMERO_CARTAO, DATACONTABIL, SITUACAO, TIPO
    END


    sexta-feira, 23 de novembro de 2012 16:47
  • Marcelo,

    Favor postar o comando completo.

    Verifica se o CASE no ORDER BY está com a sintaxe igual a do CASE que está retornando o valor na consulta.


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 23 de novembro de 2012 16:47
  • Marcelo,

    Tenta o seguinte:

    ORDER BY 
    CASE 
    WHEN CL.ORIGEM = 'SUP' 
    THEN
     G.NOME, CC.DESCRICAO, CA.NUMERO_CARTAO, DATA, CL.SITUACAO, CL.TIPO
    ELSE 
     G.NOME, UNIDADE_GESTORA, CENTRO_CUSTO, NUMERO_CARTAO, DATACONTABIL, SITUACAO, TIPO
    END


    Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    sexta-feira, 23 de novembro de 2012 16:52
  • Marcelo,

    Acho que não é possível colocar uma lista de colunas da forma como você tentou.

    Reparei inclusive que a quantidade de colunas para cada opção é diferente.

    A princípio, pelo que foi exposto, acho que existem 2 alternativas:

    - utilizar um case para cada coluna

    - concatenar os valores das colunas para formar um único valor

    Espero que seja útil.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta MarceloSchneider segunda-feira, 26 de novembro de 2012 18:01
    sexta-feira, 23 de novembro de 2012 17:31