none
Parametro com duas Datas RRS feed

  • Pergunta

  • Prezados bom dia!

    vejam se podem me ajudar

    SQL

    SELECT T.DATAEMISSAO,I.DATALANCAMENTO,
    TI.IDOBJOFICINA   

    FROM TMOV AS T (NOLOCK)
    INNER JOIN TITMMOV         AS TI WITH (NOLOCK) ON TI.CODCOLIGADA = T.CODCOLIGADA  AND TI.IDMOV = T.IDMOV
    INNER JOIN OFOBJOFICINA    AS O  WITH (NOLOCK) ON O.CODCOLIGADA  = TI.CODCOLIGADA AND O.IDOBJOF = TI.IDOBJOFICINA
    INNER JOIN OFHISTINDICADOR AS I  WITH (NOLOCK) ON I.CODCOLIGADA  = O.CODCOLIGADA  AND I.IDOBJOF = O.IDOBJOF
    WHERE T.IDMOV = '164249'

    Resultado

    Emissao       Lançamento                    Obj   

    2012-05-11  2012-05-10 15:41:05       RE-26
    2012-05-11  2012-05-10 15:43:14       RE-26
    2012-05-11  2012-05-10 15:43:54       RE-26
    2012-05-11  2012-05-10 16:08:16       RE-26

    Situacao atual tenho esses 4 lançmentos com data de emissao do dia 11/05/2012, porem a data do lançamento foi dia 10/05/2012, gostaria de buscar da seguinte forma, a data emissao sempre sera e do dia, gostaria que na data de lancamento ele buscasse somente a ultima.

    REsultado esperado:

    2012-05-11  2012-05-10 16:08:16       RE-26

    pois a data do ultimo lançamento foi 2012-05-10 16:08:16 .

    Obrigado a todos pela ajuda

    sexta-feira, 11 de maio de 2012 15:28

Respostas

  • Se você quer apenas o último lançamento da data especificada, você deve trazer o MAX do lançamento agrupando pela data e objeto

    SELECT T.DATAEMISSAO, MAX(I.DATALANCAMENTO), TI.IDOBJOFICINA

    FROM

    .....

    GROUP BY  T.DATAEMISSAO, TI.IDOBJOFICINA

    • Sugerido como Resposta Antero Marques quarta-feira, 23 de maio de 2012 14:29
    • Marcado como Resposta Ronnie Von quarta-feira, 23 de maio de 2012 17:05
    quarta-feira, 23 de maio de 2012 14:09

Todas as Respostas

  • Ronnie, boa tarde,

    Você pode usar o TOP ordenando de forma decrescente pela data.

    Tente assim:

    SELECT TOP 1 T.DATAEMISSAO,I.DATALANCAMENTO,
    TI.IDOBJOFICINA   
    FROM TMOV AS T (NOLOCK)
    INNER JOIN TITMMOV         AS TI WITH (NOLOCK) ON TI.CODCOLIGADA = T.CODCOLIGADA  AND TI.IDMOV = T.IDMOV
    INNER JOIN OFOBJOFICINA    AS O  WITH (NOLOCK) ON O.CODCOLIGADA  = TI.CODCOLIGADA AND O.IDOBJOF = TI.IDOBJOFICINA
    INNER JOIN OFHISTINDICADOR AS I  WITH (NOLOCK) ON I.CODCOLIGADA  = O.CODCOLIGADA  AND I.IDOBJOF = O.IDOBJOF
    WHERE T.IDMOV = '164249'
    ORDER BY I.DATALANCAMENTO DESC

    Att,


    Rafael Godoi Sabadin
    http://www.linkedin.com/in/rafaelgodoisabadin


    Classifique as respostas. O seu feedback é essencial.

    sexta-feira, 11 de maio de 2012 16:33
  • Ronnie,

    Acredito que você poderia utilizar o comando Distinct para eliminar a linhas duplicados e através do order by forçar o retorno dos dados de forma decrescente.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    sexta-feira, 18 de maio de 2012 19:26
  • Se você quer apenas o último lançamento da data especificada, você deve trazer o MAX do lançamento agrupando pela data e objeto

    SELECT T.DATAEMISSAO, MAX(I.DATALANCAMENTO), TI.IDOBJOFICINA

    FROM

    .....

    GROUP BY  T.DATAEMISSAO, TI.IDOBJOFICINA

    • Sugerido como Resposta Antero Marques quarta-feira, 23 de maio de 2012 14:29
    • Marcado como Resposta Ronnie Von quarta-feira, 23 de maio de 2012 17:05
    quarta-feira, 23 de maio de 2012 14:09