Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mendofh

[Resolvido] Select

Recommended Posts

OPaa galera beleza??? criei um select mas estou com uma duvida...o select foi:

 

select CON.codcon, VRA.codmot, MAX(veloci) as VELOMAX, MOT.NOMMOT 
from rodcon CON
left join rodvra VRA on VRA.CODDOC = CON.CODCON and
VRA.SERDOC = CON.SERCON and
VRA.FILDOC = CON.CODFIL
left join rodmot MOT on VRA.codmot = MOT.codmot
where placa like '1%' and CON.situac = 'E' and VRA.DATHOR > '2012-09-12 12:00'
group by CON.codcon, VRA.codmot, MOT.nommot

 

Até então ele ta funcionando perfeitamente porém tive que adicionar um novo campo nesse select (VRA.DATHOR) mas ao adicionar ele a quantidade de registro triplicam pois existem registro diferentes de 3 em 3 minutos....gostaria de saber como faço para o select acima retornar o campo (VRA.DATHOR) referente ao campo MAX(veloci) que já esta retornando...ou seja ele iria retorna a data da maior velocidade somente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado Motta, mas não consegui fazer por subquery nao.. =/

como eu faria um select para retornar a linha inteira da maior velocidade? Por exemplo

 

id_ras      veloci dathor                  coddoc
----------- ------ ----------------------- -----------
12502376    85     2012-09-13 02:27:00     1914
12502224    0      2012-09-13 02:21:00     1914
12502232    0      2012-09-13 02:21:00     1914
12502260    4      2012-09-13 02:22:00     1914
12502140    0      2012-09-13 02:17:00     1914
12512489    76     2012-09-13 07:53:00     1930
12512490    62     2012-09-13 07:58:00     1930
12512491    67     2012-09-13 08:03:00     1930
12512492    74     2012-09-13 08:08:00     1930
12512493    81     2012-09-13 08:13:00     1930

Esse é o retorno da minha select completa, queria que retornasse somente:

12502376    85     2012-09-13 02:27:00     1914
12512493    81     2012-09-13 08:13:00     1930

ou seja, a linha dos registros que tem a maior velocidade agrupoado pelo coddoc

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente algo assim :

 

select tab1.*
from (select CON.codcon, VRA.codmot, MAX(veloci) as veloci, MOT.NOMMOT 
     from rodcon CON
     left join rodvra VRA on VRA.CODDOC = CON.CODCON and
     VRA.SERDOC = CON.SERCON and
     VRA.FILDOC = CON.CODFIL
     left join rodmot MOT on VRA.codmot = MOT.codmot
      where PLACA like '1%' and CON.SITUAC = 'E' and VRA.DATHOR > '2012-09-12 12:00'
     group by CON.CODCON, VRA.CODMOT, MOT.NOMMOT) TAB1
where veloci = (select MAX(veloci)
               from rodcon CON
               left join rodvra VRA on VRA.CODDOC = CON.CODCON and
               VRA.SERDOC = CON.SERCON and
               VRA.FILDOC = CON.CODFIL
               left join rodmot MOT on VRA.codmot = MOT.codmot
                where PLACA like '1%' and CON.SITUAC = 'E' and VRA.DATHOR > '2012-09-12 12:00'
                and CON.codcon = tab1.codcon)

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente algo assim :

 

select tab1.*
from (select CON.codcon, VRA.codmot, MAX(veloci) as veloci, MOT.NOMMOT 
     from rodcon CON
     left join rodvra VRA on VRA.CODDOC = CON.CODCON and
     VRA.SERDOC = CON.SERCON and
     VRA.FILDOC = CON.CODFIL
     left join rodmot MOT on VRA.codmot = MOT.codmot
      where PLACA like '1%' and CON.SITUAC = 'E' and VRA.DATHOR > '2012-09-12 12:00'
     group by CON.CODCON, VRA.CODMOT, MOT.NOMMOT) TAB1
where veloci = (select MAX(veloci)
               from rodcon CON
               left join rodvra VRA on VRA.CODDOC = CON.CODCON and
               VRA.SERDOC = CON.SERCON and
               VRA.FILDOC = CON.CODFIL
               left join rodmot MOT on VRA.codmot = MOT.codmot
                where PLACA like '1%' and CON.SITUAC = 'E' and VRA.DATHOR > '2012-09-12 12:00'
                and CON.codcon = tab1.codcon)

opaa vlws brother...consegui desta forma:

SELECT  CON.PLACA,

       VRA.CODDOC,

       VRA.SERDOC,

       VRA.FILDOC,

       VRA.CODMOT,

       MAX(VELOCI) AS VELOMAX,

       ( SELECT    MAX(X.DATHOR)

         FROM      RODVRA X

         WHERE     X.CODDOC = VRA.CODDOC

                   AND X.SERDOC = VRA.SERDOC

                   AND X.FILDOC = VRA.FILDOC

                                                          AND X.CODMOT = VRA.CODMOT

                                                          AND X.CODVEI = VRA.CODVEI



         GROUP BY  X.CODDOC,

                   X.SERDOC,

                   X.FILDOC,

                                                          X.CODVEI,

                                                          X.VELOCI

                         HAVING         X.VELOCI = MAX(VRA.VELOCI)

       ) DATHOR,

                       VRA.CODVEI,

       MOT.NOMMOT

FROM    RODCON CON

       LEFT JOIN RODVRA VRA ON VRA.CODDOC = CON.CODCON

                               AND VRA.SERDOC = CON.SERCON

                               AND VRA.FILDOC = CON.CODFIL

       LEFT JOIN RODMOT MOT ON VRA.CODMOT = MOT.CODMOT

WHERE   PLACA LIKE '1%'

       AND CON.SITUAC = 'E'

       AND VRA.DATHOR > '2012-09-12 12:00'

GROUP BY CON.PLACA,

       VRA.CODDOC,

       VRA.SERDOC,

       VRA.FILDOC,

       VRA.CODMOT,

                       VRA.CODVEI,

       MOT.NOMMOT

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.