Ir para conteúdo
Fórum Script Brasil
  • 0

Sintaxe Case


Adenison Santos

Pergunta

Bom dia ,

Estou desenvolvendo uns relatários usando como base de dados o postgres..

Tem um campo no banco chamado valor_contabil que possui valores positivos e valores negativos.

Eu gostaria de separar em colunas os dados e estou usando a seguinte sintaxe:

SELECT
     "vendedor",
     "cliente",
     "nota_fiscal",
     "cfo",
     "produto",
     "quantidade",
     "valor_contabil",
     "vl_liquido",
     "margem",
     "item_number",
     "local_fob",
     "tx_dolar",
     "area",
     "slowmoving",
     "valor_devolucao",    
     SUBSTRING("data_referencia",1,10)as data_referencia,
     SUBSTRING("data_emissao",1,10)as data_emissao,
CASE 
    WHEN valor_contabil < 0 THEN valor_contabil as contabil_negativo,
    WHEN valor_contabil >= 0 THEN valor_contabil as contabil_positivo,
        ELSE valor_contabil as valor_contabil
END as valor_contabil2
     
FROM
     "arwteste2"
ORDER BY
     data_emissao ASC,
     cliente ASC,
     nota_fiscal ASC

O Problema é que esta dando erro próximo ao "as" ...

Alguém saberia me dizer a sintaxe correta do case no postgres?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Tente assim:

SELECT
     "vendedor",
     "cliente",
     "nota_fiscal",
     "cfo",
     "produto",
     "quantidade",
     "valor_contabil",
     "vl_liquido",
     "margem",
     "item_number",
     "local_fob",
     "tx_dolar",
     "area",
     "slowmoving",
     "valor_devolucao",    
     SUBSTRING("data_referencia",1,10)as data_referencia,
     SUBSTRING("data_emissao",1,10)as data_emissao,
CASE (valor_contabil>=0)
    WHEN ''t'' THEN
        valor_contabil as contabil_positivo,
  ELSE
      valor_contabil as contabil_negativo,
END
as valor_contabil2
    
FROM
     "arwteste2"
ORDER BY
     data_emissao ASC,
     cliente ASC,
     nota_fiscal ASC

Tente assim. Creio que o ELSE que você havia feito não seja necessário, pois se o valor não for maior ou igual a 0, então ele será menor que 0 e qualquer valor menor que 0 é negativo...

Att,

Stoma

Editado por Stoma
Link para o comentário
Compartilhar em outros sites

  • 0

Tem que criar 2 colunas, com 2 cases.

...
case when  valor_contabil >= 0 then valor_contabil else 0 end as contabil_positivo,
case when  valor_contabil < 0 then valor_contabil else 0 end as contabil_negativo,
...

Desta forma para os registros em que o valor for positivo a coluna da query de nome "contabil_positivo" terá valor e a "contabil_negativo" ficará com 0.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...