• 0
Sign in to follow this  
Gerson Silva

Executar select de ultimimo registro utiizando "IF" (condição se e somente se).

Question

Bom dia galera...Tudo bem...

Pessoal estou com uma duvida, já pesquisei em alguns tópicos, mas não consegui solucionar o meu problema, se alguém puder me ajudar agradeço.

Meu problema é o seguinte:

Possuo uma tabela como a do exemplo abaixo onde possuo 25 itens, esta tabela eu uso para montar uma segunda tabela, ou seja com o id_relatorio eu alimento a tabela com o id_relacao_atividade, sendo assim o id_relatorio aparece "n" vezes na tabela relacao_atividade.

Sendo assim eu necessito listar todos os ultimos registros da relacao_atividade que contenham apenas um iten id_relatorio, 'Se e somente se' atender aos seguintes requisitos:

 

id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1')

 

Ou seja, eu quero somente os ultimos registro de cada GROUP BY id_relatorio se e somente se atender a linha descrita acima.

 

Exemplo reduzido da minha tabela:

id_relacao_atividade - id_relatorio - id_status - resp_1 - resp_2 - resp_3 - resp_4 - numero_linha

[     1 ] - [  1  ] - [  2] [    1      ] - [    1     ] - [    0     ] - [    0      ] - [                    1 ]

[              2                  ] - [      1           ] - [       1      ] - [    1      ] - [    1     ] - [    1     ] - [    1      ] - [                    2 ]

[              3                  ] - [      2           ] - [       3      ] - [    3      ] - [    1     ] - [    0     ] - [    0      ] - [                    1 ]

[              4                  ] - [      3           ] - [       1      ] - [    3      ] - [    1     ] - [    1     ] - [    1      ] - [                    1 ]

[              5                  ] - [      3           ] - [      2       ] - [    1      ] - [    1     ] - [    1     ] - [    1      ] - [                    2 ]

 

Para que minha busca seja correta apenas os id_relacao_atividade 2 atende minha busca.

O numero_linha deve ser o máximo valor dentro do requisitos de busca assim eu garanto qeu peguei o ultimo valor dentro dos requisitos.

já tentei assim:

 

SELCT MAX(numero_linha) FROM relacao_atividade WHERE id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1') GROUP BY id_relatorio

 

Porem ele também me retorna valores que não são os últimos de cada id_relatorio.

Por isso minha afirmação "Se e somente se" atender meus requisitos.

Obrigado e até

 

 

 

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Tente assim:

SELCT MAX(numero_linha) 
FROM relacao_atividade 
GROUP BY id_relatorio
HAVING id_status = '1' AND (resp_1 = '1' OR  resp_2 = '1' OR  resp_3 = '1' OR resp_4 = '1')

O filtro na cláusula HAVING é acionado APÓS o processamento do GROUP BY.

O filtro na cláusula WHERE é acionado ANTES  do processamento do GROUP BY.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this