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

SQL - POSTGRES


Alisson Nunes da Rocha

Pergunta

Boa tarde pessoal, sou novo na area e gostaria de um apoio do forum... Estou tentando trazer num mesmo SQL o ultimo registro de cada obra (COD_OBRA)...

Observa que nos 2 primeiro registros, eu tenho: 126, 124 da mesma obra, gostaria de trazer o registro 126 (ultimo registro e maior cod_ptrab) e nas demais, ficaria:

126,

116,

31

Sempre os maiores registros de cada obra.... Se alguém pode me ajudar, fico grato!

Segue abaixo os registros retornado e o SQL:

SQL.jpg

SELECT 
    max(ptrab.id),
    ptrab.id,
    ptrab.cod_ptrab,
    ptrab.valor,
    ptrab.status,
    obra.cod_obra, 
    obra.objeto, 
    (SELECT cod_oog FROM sisdoc_v2.oog WHERE cod_ptrab = ptrab.id AND status = 'AP' ORDER BY versao DESC LIMIT 1) as oog
FROM 
    sisdoc_v2.ptrab_capa as ptrab,
    obra
WHERE
    obra.id_om = 4002 AND
    obra.situacao in('EA') AND
    obra.cod_obra = ptrab.cod_obra AND
    ptrab.status in('TT', 'AP')
GROUP BY 
    ptrab.id, 
    ptrab.cod_ptrab, 
    ptrab.valor, 
    obra.cod_obra, 
    obra.objeto, 
    ptrab.status 
ORDER BY 
    ptrab.cod_ptrab DESC

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

SELECT
    ptrab.id,
    ptrab.cod_ptrab,
    ptrab.valor,
    ptrab.status,
    obra.cod_obra,
    obra.objeto,
    (SELECT cod_oog FROM sisdoc_v2.oog WHERE cod_ptrab = ptrab.id AND status = 'AP' ORDER BY versao DESC LIMIT 1) as oog
FROM
    (
        select max(ptrab.id) as id, obra.cod_obra
        from sisdoc_v2.ptrab_capa ptrab
        inner join obra on ptrab.cod_obra = obra.cod_obra
        group by obra.cod_obra
    ) s
    inner join sisdoc_v2.ptrab_capa ptrab on s.id = ptrab.id,
    inner join obra on obra.cod_obra = s.cod_obra
WHERE
    obra.id_om = 4002 AND
    obra.situacao in('EA') AND
    ptrab.status in('TT', 'AP')
ORDER BY
    ptrab.cod_ptrab DESC

Tente sempre usar JOIN explícito.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia KAKAO, obrigado pelo auxilio...

Ao executar sua query, me deparei com esse erro:

ERRO: erro de sintaxe em ou próximo a "join"

LINE 17: inner join obra on obra.cod_obra = s.cod_obra

^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a "join"

SQL state: 42601

Caracter: 50

Consegue me ajudar? Vlw amigo!

Link para o comentário
Compartilhar em outros sites

  • 0

Tinha uma vírgula a mais. Vai postando os erros ai que eu vou corrigindo.

SELECT
    ptrab.id,
    ptrab.cod_ptrab,
    ptrab.valor,
    ptrab.status,
    obra.cod_obra,
    obra.objeto,
    (SELECT cod_oog FROM sisdoc_v2.oog WHERE cod_ptrab = ptrab.id AND status = 'AP' ORDER BY versao DESC LIMIT 1) as oog
FROM
    (
        select max(ptrab.id) as id, obra.cod_obra
        from sisdoc_v2.ptrab_capa ptrab
        inner join obra on ptrab.cod_obra = obra.cod_obra
        group by obra.cod_obra
    ) s
    inner join sisdoc_v2.ptrab_capa ptrab on s.id = ptrab.id
    inner join obra on obra.cod_obra = s.cod_obra
WHERE
    obra.id_om = 4002 AND
    obra.situacao in('EA') AND
    ptrab.status in('TT', 'AP')
ORDER BY
    ptrab.cod_ptrab DESC

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...