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

(Resolvido) Dúvida em query


Pedro Gaz

Pergunta

Pessoal, uma dúvida em uma query que estou precisando fazer.

Sendo a senguinte tabela:

id | trecho | programa | data | situacao

1 | 60 | 1 | 10/01/2012 | 1

2 | 60 | 1 | 11/01/2012 | 2

3 | 50 | 2 | 10/01/2012 | 1

4 | 40 | 2 | 10/01/2012 | 1

5 | 30 | 1 | 10/01/2012 | 1

6 | 30 | 1 | 10/01/2012 | 2

7 | 60 | 2 | 10/01/2012 | 1

Meu retorno deveria ser:

2 | 60 | 1 | 11/01/2012 | 2

3 | 50 | 2 | 10/01/2012 | 1

4 | 40 | 2 | 10/01/2012 | 1

6 | 30 | 1 | 10/01/2012 | 2

7 | 60 | 2 | 10/01/2012 | 1

Ou seja: a última ocorrência para cada trecho em programa (Group by trecho, programa) até ai tudo bem, mas quando é o mesmo trecho, mesmo programa e as datas são igual conforme o id 5,6 me retornará 2 registros, quando na verdade preciso retornar somente o último inserido, ou seja o id 6..

alguém poderia me dizer qual é essa solução?

Obrigado.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Pedro,

Para você pegar o ultimo registro, o certo teria q criar uma data de inserção dos registros...

Como você tem duas datas iguais para o mesmo trecho, o sql vai lendo os dados e armazenando.

Por exemplo:

Id=5, Trecho=30. Se estiver agrupando, o sql vai pegar o primeiro registro que ler do trecho 30 e armazenar. No próximo trecho=30, se a data for maior, o registro é substiuito. Se for menor ou igual, nada é feito.

Sendo assim, o registro do trecho=30 não é substituido pelo "último inserido".

Segue um exemplo no sql:

CREATE TABLE #teste (id INT, trecho INT, programa INT, DATA DATETIME, situacao INT)

INSERT INTO #teste VALUES (1 , 60 , 1 , '2010-01-10' , 1)
INSERT INTO #teste VALUES (2 , 60 , 1 , '2012-01-11' , 2)
INSERT INTO #teste VALUES (3 , 50 , 2 , '2012-01-10' , 1)
INSERT INTO #teste VALUES (4 , 40 , 2 , '2012-01-10' , 1)
INSERT INTO #teste VALUES (5 , 30 , 1 , '2012-01-10' , 1)
INSERT INTO #teste VALUES (6 , 30 , 1 , '2012-01-10' , 2)
INSERT INTO #teste VALUES (7 , 60 , 2 , '2012-01-10' , 1)

SELECT trecho, programa, max(DATA) FROM #teste GROUP BY trecho, programa

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