none
Funções MAX e MIN RRS feed

  • Pergunta

  • Estou tentando obter o ultimo treinamento realizado por curso, e está apresentando o primeiro.

    Ex: curso 1, Treinamentos: 21/08/2011, 08/10/2012

    SELECT id_Curso AS Expr1, MAX(CONVERT(varchar(10), data_inicioTreinamento, 103)) AS maxData
    FROM   TreinamentoProgramacao
    WHERE     (realizado = 1)
    GROUP BY id_Curso

    Se eu uso a a função Min, o resultado é o esperado. Porque?

    SELECT  id_Curso AS Expr1, MIN(CONVERT(varchar(10), data_inicioTreinamento, 103)) AS maxData
    FROM    TreinamentoProgramacao
    WHERE     (realizado = 1)
    GROUP BY id_Curso


    [b]Sergio Ivanenko[/b]

    terça-feira, 9 de outubro de 2012 00:42

Respostas

  • Boa noite,

    Para obter o resultado esperado será necessário manter a coluna data_inicioTreinamento no tipo Date (ou semelhante), sem a conversão para varchar com o parâmetro 103 (dd/mm/yyyy).

    Ao converter para varchar, vale a ordem alfabética, por isso 21/08/2011 é maior que 08/10/2012.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Ivanenko terça-feira, 9 de outubro de 2012 01:22
    terça-feira, 9 de outubro de 2012 01:14
  • Sim,

    exemplo: é fazer o convert primeiro e depois o max

    SELECT convert(varchar(10),MAX(DATAPEDIDO),103) FROM T_PEDIDO


    Atenciosamente, Ruberlei.

    www.t-sql.com.br


    • Editado Ruberlei terça-feira, 9 de outubro de 2012 01:34 melhoria
    • Sugerido como Resposta Ruberlei terça-feira, 9 de outubro de 2012 01:34
    • Marcado como Resposta Ivanenko terça-feira, 9 de outubro de 2012 01:38
    terça-feira, 9 de outubro de 2012 01:33

Todas as Respostas

  • Cara, isso não tem lógica.

    O max traz a maior data e o min traz a menor. Simples assim.

    Claro que é com base no agrupamento realizado, o que não muda a lógica da coisa.

    Como estão seus registros? Quais as datas da tabela?

    E, principalmente, qual data o Max e o MIn estão trazendo???


    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    terça-feira, 9 de outubro de 2012 01:13
    Moderador
  • Boa noite,

    Para obter o resultado esperado será necessário manter a coluna data_inicioTreinamento no tipo Date (ou semelhante), sem a conversão para varchar com o parâmetro 103 (dd/mm/yyyy).

    Ao converter para varchar, vale a ordem alfabética, por isso 21/08/2011 é maior que 08/10/2012.

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Ivanenko terça-feira, 9 de outubro de 2012 01:22
    terça-feira, 9 de outubro de 2012 01:14
  • Boa noite, Ivanenko,

    Eu fiz teste e o convert ta fazendo com que essa situação ocorra já que tudo está sendo convertido para varchar e não está sendo utilizado o max da data.

    Atenciosamente,

    Ruberlei.


    • Editado Ruberlei terça-feira, 9 de outubro de 2012 01:21
    • Sugerido como Resposta Ruberlei terça-feira, 9 de outubro de 2012 01:22
    terça-feira, 9 de outubro de 2012 01:20
  • Gapmex

    Tem como apresenta-la no formato "dd/mm/yyyy"?


    [b]Sergio Ivanenko[/b]

    terça-feira, 9 de outubro de 2012 01:30
  • Sim,

    exemplo: é fazer o convert primeiro e depois o max

    SELECT convert(varchar(10),MAX(DATAPEDIDO),103) FROM T_PEDIDO


    Atenciosamente, Ruberlei.

    www.t-sql.com.br


    • Editado Ruberlei terça-feira, 9 de outubro de 2012 01:34 melhoria
    • Sugerido como Resposta Ruberlei terça-feira, 9 de outubro de 2012 01:34
    • Marcado como Resposta Ivanenko terça-feira, 9 de outubro de 2012 01:38
    terça-feira, 9 de outubro de 2012 01:33
  • Ruberlei e Gapmex.

    Obrigado.


    [b]Sergio Ivanenko[/b]

    terça-feira, 9 de outubro de 2012 01:40