Jump to content
Fórum Script Brasil
  • 0

(Resolvido) Dúvida em query


Pedro Gaz

Question

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 to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to comment
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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...